【问题标题】:average of one column in multi index dataframe in pandas熊猫多索引数据框中一列的平均值
【发布时间】:2020-04-04 00:54:44
【问题描述】:

我有一个与此类似的多索引数据框。

arrays = [np.array(['bar', 'bar', 'bar','baz', 'baz', 'baz', 'foo', 'foo', 'foo']),
      np.array(['one', 'two', 'three', 'one', 'two', 'three','one', 'two','three'])]
s = pd.Series(np.random.randn(9), index=arrays)
df = pd.DataFrame(np.random.randn(9, 2), index=arrays,columns=['C1','C2'])
df

我想在数据框的末尾添加一个新列,该列将按 level=0 ('bar','baz','foo') 分组,并对这些组的 C2 列中的数字进行平均。我想在一个场景中(或者在每个级别 = 0 的顶行)位置显示级别 = 0 的 3 个单独行中的每一行的相同平均数

【问题讨论】:

    标签: python pandas multi-level


    【解决方案1】:

    试试transformmean

    df.groupby(level=0).transform('mean')
                     C1        C2
    bar one    0.473968 -0.454709
        two    0.473968 -0.454709
        three  0.473968 -0.454709
    baz one    0.731266 -0.437691
        two    0.731266 -0.437691
        three  0.731266 -0.437691
    foo one    0.061087 -0.326533
        two    0.061087 -0.326533
        three  0.061087 -0.326533
    

    更新

    df['C3']=df.groupby(level=0).C2.transform('mean')
    

    【讨论】:

    • 这是所有列(C1 和 C2)的平均值。我想添加第三列(new_column),其中 C2 的平均值基于 level=0。所以我想在现有数据框中保持所有数字相同,但在结果中添加第三列
    猜你喜欢
    • 2022-01-25
    • 2023-04-07
    • 2020-04-13
    • 2021-04-16
    • 2018-05-15
    • 1970-01-01
    • 2019-02-28
    • 2013-12-28
    • 2020-08-09
    相关资源
    最近更新 更多