我有3列
Date A B
1/7/2016 8:00 0 0
1/7/2016 8:30 1 1
1/7/2016 9:00 2 1
2/7/2016 8:00 0 0
2/7/2016 8:30 0 1
我想创建一个仅提取小时和分钟的列C,列D对列C进行分组并对列A进行求和,对列C进行分组并对列B进行求和
Date A B C
1/7/2016 8:00 0 0 8:00
1/7/2016 8:30 1 1 8:30
1/7/2016 9:00 2 1 9:00
2/7/2016 8:00 0 0 8:00
2/7/2016 8:30 0 1 8:30
预期产出:
Time D E
8:00 0 0
8:30 1 2
9:00 2 1
我试过了:
df["date"] = pd.to_datetime(df["date"], format="%d/%m/%Y %H:%M")
df['hour'] = df.date.apply(lambda x: x.hour)
我可以提取小时而不是小时和分钟。希望听到一些建议
谢谢,
答案 0 :(得分:0)
假设df.Date
为datetime
,您可以通过dt
属性访问许多矢量化日期时间函数。
df.Date = pd.to_datetime(df.Date)
df['C'] = df.Date.dt.strftime('%-H:%M')
df
df['C'] = df.Date.str.extract(r'\s+0?(\d{1,2}:\d{2})', expand=False)
执行groupby
,然后更改名称。
gdf = df.groupby('C')[['A', 'B']].sum()
gdf.reset_index().rename(columns=dict(C='Time', A='D', B='E'))