【问题标题】:pandas groupby dropping columnspandas groupby 删除列
【发布时间】:2016-10-01 06:02:02
【问题描述】:

我正在做一个简单的分组操作,试图比较分组均值。正如您在下面看到的,我从一个较大的数据框中选择了特定的列,其中所有缺失的值都已删除。

但是当我分组时,我丢失了几列:

我从未在 pandas 中遇到过这种情况,而且我在堆栈溢出中也没有发现任何与此类似的东西。有人有什么见解吗?

【问题讨论】:

    标签: python pandas dataframe pandas-groupby


    【解决方案1】:

    我认为是Automatic exclusion of 'nuisance' columns,描述了here

    示例:

    df = pd.DataFrame({'C': {0: -0.91985400000000006, 1: -0.042379, 2: 1.2476419999999999, 3: -0.00992, 4: 0.290213, 5: 0.49576700000000001, 6: 0.36294899999999997, 7: 1.548106}, 'A': {0: 'foo', 1: 'bar', 2: 'foo', 3: 'bar', 4: 'foo', 5: 'bar', 6: 'foo', 7: 'foo'}, 'B': {0: 'one', 1: 'one', 2: 'two', 3: 'three', 4: 'two', 5: 'two', 6: 'one', 7: 'three'}, 'D': {0: -1.131345, 1: -0.089328999999999992, 2: 0.33786300000000002, 3: -0.94586700000000001, 4: -0.93213199999999996, 5: 1.9560299999999999, 6: 0.017587000000000002, 7: -0.016691999999999999}})
    
    print (df)
         A      B         C         D
    0  foo    one -0.919854 -1.131345
    1  bar    one -0.042379 -0.089329
    2  foo    two  1.247642  0.337863
    3  bar  three -0.009920 -0.945867
    4  foo    two  0.290213 -0.932132
    5  bar    two  0.495767  1.956030
    6  foo    one  0.362949  0.017587
    7  foo  three  1.548106 -0.016692
    
    print( df.groupby('A').mean())
                C         D
    A                      
    bar  0.147823  0.306945
    foo  0.505811 -0.344944
    

    我想你可以查看DataFrame.dtypes

    【讨论】:

    • @jezraiel。有没有办法阻止这种情况?所以旧的标题仍然在顶部?
    • @spacedustpi - 你认为df.groupby('A', as_index=False).mean() 还是df.groupby('A').mean().reset_index()
    • 这是我的代码:df1 = df.groupby(['ORGNTR_NM', 'ORGNTR_BNK_NM', 'BNFCRY_BNK_NM', 'BNFCRY_NM'], as_index=False)['TRNSXN_AMT'].agg(['总和','计数'])。结果是这四个原始列不再是列,而 'sum' 和 'count' 是,并且它们在旧列之上。我希望它们都成为标题。
    • 做到了!谢谢。
    • 确实会更容易。我最终做了df.mycols.fillna(''),分组,然后df.problem_col.replace('^;|;$','')
    【解决方案2】:

    试试df.groupby(['col_1', 'col_2'], as_index=False).mean()。 使用as_index=False 保留列名。默认为真。以上 cmets 已回答此问题,但将其作为答案发布。

    【讨论】:

      【解决方案3】:

      确保您的列是数字/整数格式,而不是例如作为“O”作为对象格式。 这是它对我消失的原因之一。

      您可以通过下面的hte代码检查列的格式:

      df.column.dtypes
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-24
        • 1970-01-01
        • 2021-04-15
        • 2020-11-26
        • 2021-03-04
        • 2013-05-30
        • 2014-09-05
        相关资源
        最近更新 更多