【问题标题】:Pandas: Saving 'groupby' output to csv, details about column indices and datetime format lostPandas:将“groupby”输出保存到 csv,列索引和日期时间格式的详细信息丢失
【发布时间】: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 时保留该细节;或者有没有办法

  1. 将某些列名转换为日期时间对象?

df.columns[i] 访问特定索引并应用to_datetime 不起作用,因为它返回“索引不支持可变操作”。

  1. 再次将标题行重命名为“Trip End Timestamp”?

【问题讨论】:

  • read_csv 还是 from_csv 有一个解析日期 kwarg
  • read_csvheader 参数将采用构成多索引的行列表。
  • 但是在to_csv操作的过程中其实细节已经丢失了,那么找回是不是有点复杂?

标签: python pandas csv dataframe


【解决方案1】:

这并不能回答 csv 上下文中的问题,但以 hdf5 格式保存数据帧实际上保留了多索引以及日期时间对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多