使用以下代码:
import pandas as pd
date_spec = {'transdate': [[0, 1, 2]]}
df2 = pd.read_csv('fruit.csv', header=None, parse_dates=date_spec)
print df2
我正在尝试读取如下所示的 csv 文件:
2011,1,10,Apple,Red,1500,
2011,1,13,Apple,Green,1500,
2011,1,13,Orange,Red,4000,
2011,1,26,Banana,Red,1000,
2011,2,2,Pear,Green,4000,
2011,2,10,Pear,Red,4000,
2011,3,3,Banana,Green,1000,
2011,3,3,Orange,Green,2200,
2011,6,3,Orange,Green,3300,
转换为如下所示的 Numpy 数组:
2011-01-10,Apple,Red,1500
2011-01-13,Apple,Blue,1500
2011-01-13,Orange,Red,4000
2011-01-26,Banana,Red,1000
2011-02-02,Pear,Blue,4000
2011-02-10,Pear,Red,4000
2011-03-03,Banana,Blue,1000
2011-03-03,Orange,Blue,2200
2011-06-03,Orange,Blue,3300
但我的打印输出如下所示:
X.1 X.2 X.3 X.4 X.5 X.6 X.7
0 2011 1 10 Apple Red 1500 NaN
1 2011 1 13 Apple Blue 1500 NaN
2 2011 1 13 Orange Red 4000 NaN
3 2011 1 26 Banana Red 1000 NaN
4 2011 2 2 Pear Blue 4000 NaN
5 2011 2 10 Pear Red 4000 NaN
6 2011 3 3 Banana Blue 1000 NaN
7 2011 3 3 Orange Blue 2200 NaN
8 2011 6 3 Orange Blue 3300 NaN
我尝试了几种变体,但无法将 3 列中的日期转换为格式为“YYYY-MM-DD”的 1 列日期。非常感谢任何对此的帮助。
最佳答案
读取 csv 后,构建您自己的日期
列:
In [59]: df['date'] = df.apply(lambda x:datetime.date(x[0],x[1], x[2]), axis=1)
In [60]: df
Out[60]:
0 1 2 3 4 5 6 date
0 2011 1 10 Apple Red 1500 NaN 2011-01-10
1 2011 1 13 Apple Green 1500 NaN 2011-01-13
2 2011 1 13 Orange Red 4000 NaN 2011-01-13
3 2011 1 26 Banana Red 1000 NaN 2011-01-26
4 2011 2 2 Pear Green 4000 NaN 2011-02-02
5 2011 2 10 Pear Red 4000 NaN 2011-02-10
6 2011 3 3 Banana Green 1000 NaN 2011-03-03
7 2011 3 3 Orange Green 2200 NaN 2011-03-03
8 2011 6 3 Orange Green 3300 NaN 2011-06-03
然后删除无用的列:
In [61]: del df[0], df[1], df[2]
In [62]: df
Out[62]:
3 4 5 6 date
0 Apple Red 1500 NaN 2011-01-10
1 Apple Green 1500 NaN 2011-01-13
2 Orange Red 4000 NaN 2011-01-13
3 Banana Red 1000 NaN 2011-01-26
4 Pear Green 4000 NaN 2011-02-02
5 Pear Red 4000 NaN 2011-02-10
6 Banana Green 1000 NaN 2011-03-03
7 Orange Green 2200 NaN 2011-03-03
8 Orange Green 3300 NaN 2011-06-03
关于python-2.7 - read_csv 在 Python 中使用 pandas 将 3 列日期转换为 1 列日期格式,例如 YYYY-MM-DD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15778371/