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)
我得到了同样的错误。
最好的解决方法是什么?到目前为止,我还没有找到解决方案。
我认为你需要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)