通过熊猫数据框分组并通过转换创建新列

时间:2020-11-02 23:05:37

标签: python pandas group-by transform apply

想象一下,我们有一个像df这样的DataFrame:

df = pd.DataFrame([('AL', 2, 0.3),
                      ('WY', 4, 0.2),
                     ('CO', 1, 0.9),
                     ('WY', 6, 0.2),
                    ('CO', 6, 0.1),
                     ('CO', 8, 0.3),
                   ('CO', 3, 0.2),
                   ('TX', 2, 0.4),
                   ('AL', 4, 0.4)],
                   columns=('ST', 'Case', 'Prob'))

我想将此数据帧拆分为单独的状态,并在Case列上运行diff()。到目前为止,我已经做到了: 我首先按状态和案例排序(我需要排序案例)。然后,通过“ ST”进行分组,并尝试使用一个称为Test的函数来进行diff(),但此dsnt起作用。我一直在阅读文档,发现对如何使用转换和应用感到困惑。有什么帮助吗?谢谢

def test(x):
    return x.diff()

def daily_windowed_avg(df):
   
    df= df.sort_values(by=['ST', 'Case'], ascending=[True, True])
    
    df['Case diff'] = df.groupby(df['ST']).transform(lambda x: test(x), axis=1)
    
    return df
    
daily_windowed_avg(df)

0 个答案:

没有答案