【发布时间】:2018-04-17 20:27:26
【问题描述】:
我正在尝试通过 Pandas 将 groupby 操作的输出保存到 csv 文件中。我的 groupby 操作是按变量“ID”分组并对值求和,然后按时间范围(例如按周)对这些求和值重新采样的组合。命令看起来像
tdGroupedWeek = (taxiData.groupby(['Taxi ID', pd.Grouper(freq='W', key='Trip End Timestamp')])
['Trip Total']
.sum()
.unstack(fill_value=0))
tdGroupedWeek.to_csv('week.csv', sep='\t', date_format='%Y-%m-%d %H:%M:%S')
保存前,数据框如下所示:
Trip End Timestamp 2013-01-06 00:00:00 2013-01-13 00:00:00 2013-01-20 00:00:00 2013-01-27 00:00:00 2013-02-03 00:00:00 2013-02-10 00:00:00
Taxi ID
A 0.0 0.0 0.00 0.00 0.0 0.00
B 0.0 0.0 0.00 0.00 0.0 0.00
C 0.0 0.0 0.00 0.00 0.0 0.00
D 0.0 0.0 1181.28 458.46 0.0 687.57
E 0.0 0.0 0.00 0.00 0.0 0.00
但是当我重新打开这个 csv 时,数据框似乎丢失了将列索引命名为“Trip End Timestamp”的额外标识符,而且我也无法再次将列名转换为日期时间对象,因为它们是转换为字符串。现在,数据框看起来像:
Taxi ID 2013-01-06 00:00:00 2013-01-13 00:00:00 2013-01-20 00:00:00 2013-01-27 00:00:00 2013-02-03 00:00:00 2013-02-10 00:00:00
0 A 0.0 0.0 0.00 0.00 0.0 0.00
1 B 0.0 0.0 0.00 0.00 0.0 0.00
2 C 0.0 0.0 0.00 0.00 0.0 0.00
3 D 0.0 0.0 1181.28 458.46 0.0 687.57
4 E 0.0 0.0 0.00 0.00 0.0 0.00
有没有办法在编写 csv 时保留该细节;或者有没有办法
- 将某些列名转换为日期时间对象?
以df.columns[i] 访问特定索引并应用to_datetime 不起作用,因为它返回“索引不支持可变操作”。
- 再次将标题行重命名为“Trip End Timestamp”?
【问题讨论】:
-
read_csv 还是 from_csv 有一个解析日期 kwarg
-
read_csv的header参数将采用构成多索引的行列表。 -
但是在
to_csv操作的过程中其实细节已经丢失了,那么找回是不是有点复杂?
标签: python pandas csv dataframe