【问题标题】:Grouping data in Python with pandas yields a blank first row在 Python 中使用 pandas 对数据进行分组会产生空白的第一行
【发布时间】:2015-03-25 00:25:57
【问题描述】:

我有这个漂亮的 pandas 数据框:

我想按“0”列(代表年份)对其进行分组,并计算其他列的平均值。我用这段代码做这样的事情:

df.groupby(0)[2,3,4].mean()

这成功地计算了每一列的平均值。这里的问题是出现在顶部的空行:

【问题讨论】:

    标签: python pandas group-by mean


    【解决方案1】:

    这只是一个显示的东西,分组的列现在变成了索引,这就是它的显示方式,你会注意到,即使你设置了pd.set_option('display.notebook_repr_html', False),你仍然会得到这一行,它对对 goruped df 的操作:

    In [30]:
    
    df = pd.DataFrame({'a':np.random.randn(5), 'b':np.random.randn(5), 'c':np.arange(5)})
    df
    Out[30]:
              a         b  c
    0  0.766706 -0.575700  0
    1  0.594797 -0.966856  1
    2  1.852405  1.003855  2
    3 -0.919870 -1.089215  3
    4 -0.647769 -0.541440  4
    In [31]:
    
    df.groupby('c')['a','b'].mean()
    Out[31]:
              a         b
    c                    
    0  0.766706 -0.575700
    1  0.594797 -0.966856
    2  1.852405  1.003855
    3 -0.919870 -1.089215
    4 -0.647769 -0.541440
    

    从技术上讲,它已经分配了name 属性:

    In [32]:
    
    df.groupby('c')['a','b'].mean().index.name
    Out[32]:
    'c'
    

    默认情况下,如果没有分配,则没有名称:

    In [34]:
    
    print(df.index.name)
    None
    

    【讨论】:

    • 您可以添加reset_index 可用于返回标准索引`
    • @cel 是的,这是真的,但根据用例并不完全必要
    猜你喜欢
    • 2020-10-20
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    相关资源
    最近更新 更多