在pandas数据框中添加具有相同列值的行

时间:2016-01-07 14:07:22

标签: python pandas dataframe

我有一个以日期和小时为列的pandas数据框。现在我想添加相同日期的小时数。例如,要做到这一点:

7-1-2016 | 4
7-1-2016 | 2
4-1-2016 | 5

进入这个:

7-1-2016 | 6
4-1-2016 | 5

在大文件上有快速的方法吗?

2 个答案:

答案 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)。