Python 如何使用分组中的统计信息向数据帧添加列 让我们考虑下面的数据框: d = {'timestamp': ['2019-04-01', '2019-04-01', '2019-04-02', '2019-04-02', '2019-04-02'],\ 'type': ['A', 'B', 'B', 'B', 'A'],\ 'value': [3, 4, 4, 2, 5]} df = pd.DataFrame(data=d) timestamp type value 0 2019-04-01 A 3 1 2019-04-01 B 4 2 2019-04-02 B 4 3 2019-04-02 B 2 4 2019-04-02 A 5

Python 如何使用分组中的统计信息向数据帧添加列 让我们考虑下面的数据框: d = {'timestamp': ['2019-04-01', '2019-04-01', '2019-04-02', '2019-04-02', '2019-04-02'],\ 'type': ['A', 'B', 'B', 'B', 'A'],\ 'value': [3, 4, 4, 2, 5]} df = pd.DataFrame(data=d) timestamp type value 0 2019-04-01 A 3 1 2019-04-01 B 4 2 2019-04-02 B 4 3 2019-04-02 B 2 4 2019-04-02 A 5,python,pandas,dataframe,Python,Pandas,Dataframe,我想得到的是另一列,其中包含特定时间段和类型内所有值的度量。 例如,每天每种类型的标准偏差。使用: 如果可能需要多个指标,请使用: 有关聚合的更多信息,请参阅 编辑:如果只需要几个月,请使用: 如果需要年和月,则使用月周期: m = df['timestamp'].dt.to_period('m').rename('months') df = df.groupby([m,'type'])['value'].describe() print (df) count

我想得到的是另一列,其中包含特定时间段和类型内所有值的度量。 例如,每天每种类型的标准偏差。

使用:

如果可能需要多个指标,请使用:

有关聚合的更多信息,请参阅


编辑:如果只需要几个月,请使用:

如果需要年和月,则使用月周期:

m = df['timestamp'].dt.to_period('m').rename('months')
df = df.groupby([m,'type'])['value'].describe()
print (df)
              count      mean       std  min  25%  50%  75%  max
months  type                                                    
2019-04 A       2.0  4.000000  1.414214  3.0  3.5  4.0  4.5  5.0
        B       3.0  3.333333  1.154701  2.0  3.0  4.0  4.0  4.0

您是否可以添加一个可能的解决方案,每月统计数据?
df = df.groupby(['timestamp','type'])['value'].describe()
print (df)
                 count  mean       std  min  25%  50%  75%  max
timestamp  type                                                
2019-04-01 A       1.0   3.0       NaN  3.0  3.0  3.0  3.0  3.0
           B       1.0   4.0       NaN  4.0  4.0  4.0  4.0  4.0
2019-04-02 A       1.0   5.0       NaN  5.0  5.0  5.0  5.0  5.0
           B       2.0   3.0  1.414214  2.0  2.5  3.0  3.5  4.0
df['timestamp'] = pd.to_datetime(df['timestamp'])

df = df.groupby([df['timestamp'].dt.month.rename('months'),'type'])['value'].describe()
print (df)
             count      mean       std  min  25%  50%  75%  max
months type                                                    
4      A       2.0  4.000000  1.414214  3.0  3.5  4.0  4.5  5.0
       B       3.0  3.333333  1.154701  2.0  3.0  4.0  4.0  4.0
m = df['timestamp'].dt.to_period('m').rename('months')
df = df.groupby([m,'type'])['value'].describe()
print (df)
              count      mean       std  min  25%  50%  75%  max
months  type                                                    
2019-04 A       2.0  4.000000  1.414214  3.0  3.5  4.0  4.5  5.0
        B       3.0  3.333333  1.154701  2.0  3.0  4.0  4.0  4.0