我有一个以日期和小时为列的pandas数据框。现在我想添加相同日期的小时数。例如,要做到这一点:
7-1-2016 | 4
7-1-2016 | 2
4-1-2016 | 5
进入这个:
7-1-2016 | 6
4-1-2016 | 5
在大文件上有快速的方法吗?
答案 0 :(得分:3)
此处GroupBy可用于提供所需的输出。
DataFrame.groupby(by = None,axis = 0,level = None,as_index = True,sort = True,group_keys = True,squeeze = False) 使用mapper(dict或key函数,将给定的函数应用于组,将结果作为系列返回)或通过一系列列的组系列。
尝试:df.groupby('date')['hours']。sum()
答案 1 :(得分:0)
将索引设置为日期允许您使用重新采样方法(以及许多其他时间序列功能)。如果您还有其他分析要做,我建议:
df.index = pd.to_datetime(df['datecol'].astype(str) + ' ' + df['Hourcol'].astype(str), format='%Y-%m-%d %H')
df = df.resample('1d', how='sum') # defaults to mean
如果列已经是字符串,则根据需要省略.astpye(str)。但是,
df.groupby('datecol').sum()['Hourcol']
如果这是您想要做的唯一分析,也会起作用。如果小时列不是数字,则可能需要添加.astype(int)。