计算datafram中非数字列的每日发生率

2024-09-27 19:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有福勒。数据帧(每小时时间戳索引):

                      relative_humidity                 condition   fid
2017-08-02 10:00:00               0.49  Chance of a Thunderstorm     1
2017-08-02 11:00:00               0.50  Chance of a Thunderstorm     1
2017-08-02 12:00:00               0.54             Partly Cloudy     1
2017-08-02 13:00:00               0.58             Partly Cloudy     2
2017-08-02 14:00:00               0.68             Partly Cloudy     2

我如何计算每天最常发生的情况,并将其放在以日期为索引的数据框中。还需要用fid分隔吗

我试过:

df.groupby(['fid', pd.Grouper(freq='D')])['condition']

Tags: of数据df时间情况conditioncloudy小时
2条回答
df.groupby(['fid',pd.Grouper(freq='D'),'condition']).size().groupby(level=[0,1]).head(1)

输出:

fid              condition               
1    2017-08-02  Chance of a Thunderstorm    2
2    2017-08-02  Partly Cloudy               2
dtype: int64

您需要^{}index[0],因为数据是经过排序的,第一个值是top:

d = {'level_1':'date'}
df1 = df.groupby(['fid', pd.Grouper(freq='D')])['condition'] \
       .apply(lambda x: x.value_counts().index[0]).reset_index().rename(columns=d)
print (df1)
   fid       date                 condition
0    1 2017-08-02  Chance of a Thunderstorm
1    2 2017-08-02             Partly Cloudy

相关问题 更多 >

    热门问题