如何提取小时和分钟以及组合

时间:2016-07-03 06:10:00

标签: python pandas

我有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)

我可以提取小时而不是小时和分钟。希望听到一些建议

谢谢,

1 个答案:

答案 0 :(得分:0)

备选方案#1(将日期设为日期时间列)

假设df.Datedatetime,您可以通过dt属性访问许多矢量化日期时间函数。

df.Date = pd.to_datetime(df.Date)
df['C'] = df.Date.dt.strftime('%-H:%M')
df

备选方案#2(使用正则表达式提取小时/分钟)

df['C'] = df.Date.str.extract(r'\s+0?(\d{1,2}:\d{2})', expand=False)

enter image description here

结果

执行groupby,然后更改名称。

gdf = df.groupby('C')[['A', 'B']].sum()
gdf.reset_index().rename(columns=dict(C='Time', A='D', B='E'))

enter image description here

替代品的时间安排(100000行)

enter image description here