Pandas:保存'groupby'输出到csv,列索引和日期时间格式的详细信息

2024-04-18 07:44:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过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时,dataframe似乎丢失了将列索引命名为“Trip End Timestamp”的额外标识符,而且我也很难再次将列名转换为datetime对象,因为它们被转换为字符串。现在,数据帧看起来像:

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”?你知道吗

Tags: 文件csvto数据对象方法idpandas