在 csv.reader 之后从列(Python Pandas)中获取最早的日期

Apo*_*mer 3 python csv date pandas

我从具有多列的 CSV 文件加载一些数据。在我的 csv.reader 中,我有一个 IF 函数。我试图从特定列(开始日期)中获取最早的日期。

我首先加载数据:

for row in csv.reader(open('myFile.csv')):
  if row[4] == '56886':
    key = row[4] #key = (row[4], row[33][:4], row[4])
    startDate = row[19]
Run Code Online (Sandbox Code Playgroud)

当我打印列 (startDate) 时,我得到了这个:

在此处输入图片说明

01)我尝试使用以下内容:

content = min(content)
print(content)
Run Code Online (Sandbox Code Playgroud)

我在终端得到了这个:

在此处输入图片说明

02)然后我尝试更改我的代码:

for row in csv.reader(open('myFile.csv',
        parse_dates=['Start Date'], 
        usecols=['Start Date']))
  if row[4] == '56886':
    key = row[4] #key = (row[4], row[33][:4], row[4])
    startDate = row[19]
Run Code Online (Sandbox Code Playgroud)

我收到了无效的语法错误。

03)我尝试将线路更改为:

pandas.read_csv('myFile.csv', parse_dates=['Start Date'], usecols=['Start Date'])
Run Code Online (Sandbox Code Playgroud)

我得到了同样的错误。

最好的解决方法是什么?到目前为止,我还没有找到解决方案。

jez*_*ael 5

我认为你需要boolean indexing过滤:

#dont filter all columns by usecols    
df = pd.read_csv('file', parse_dates=['Start Date', 'End Date']) #columns to datetimes

#filter output first by column ID and then get min and max
a = df.loc[ df['ID'] == 56886, 'Start Date'].min()


b = df.loc[ df['ID'] == 56886, 'End Date'].max()
Run Code Online (Sandbox Code Playgroud)