我有一个带有两列的DataFrame
,Type
和Time
:
import pandas as pd
import dateutil.parser
df = pd.DataFrame({'Type' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo', 'foo', 'foo'],
'Time' : ['9:11', '9:54', '15:12', '11:39', '21:50', '15:40', '1:23', '1:48', '9:13', '9:48']})
Type
表示某些分类事件(这里是foo
和bar
),而Time
是表示一天中时间的字符串。我想确定在一天中的哪个小时,{
到目前为止,我得出了以下结论:
def get_hour(timestring):
return dateutil.parser.parse(timestring).hour
df['_hour'] = df['Time'].apply(get_hour)
grouped_count = df.groupby(['_hour', 'Type']).count()
print(grouped_count)
哪个指纹
Time
_hour Type
1 foo 2
9 bar 1
foo 3
11 bar 1
15 bar 1
foo 1
21 foo 1
这里的Time
列表示每小时每种类型的事件总数。但是,我想生成一个辅助列,比如Fraction
,它包含每个事件与该小时的分数,如下所示:
Time Fraction
_hour Type
1 foo 2 1.0
9 bar 1 0.25
foo 3 0.75
11 bar 1 1.0
15 bar 1 0.5
foo 1 0.5
21 foo 1 1.0
我怎样才能做到这一点?你知道吗
您可以按\u hour索引分组,并使用
transform
(或apply
)计算分数:如果不需要时间列,也可以执行
.value_counts(normalize=True)
:使用标准的
h:m
字符串,还可以按如下方式解析hour
:用途:
相关问题 更多 >
编程相关推荐