我从包含多列的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)时,我得到了这个:
01)我尝试使用以下内容:
content = min(content)
print(content)
我在终端得到了这个:
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'])
我得到了同样的错误。
最佳解决方法是什么?到目前为止我还没有找到解决方案。
答案 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 )