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

时间:2017-10-20 11:30:59

标签: python pandas csv date

我从包含多列的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]

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

enter image description here

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

content = min(content)
print(content)

我在终端得到了这个:

enter image description here

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]

我的语法无效错误。

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

pandas.read_csv('myFile.csv', parse_dates=['Start Date'], usecols=['Start Date'])

我得到了同样的错误。

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

2 个答案:

答案 0 :(得分:1)

我认为您需要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()

答案 1 :(得分:0)

使用pandas转换单个项目的示例:

pd.to_datetime("08/27/2017")

使用pandas转换一个字符串列表的示例:

times = []
for i in range(30):
    times.append(str(i+1)+"/01/2016")
datetimes = pd.to_datetime(times)
min(datetimes )