【问题标题】:Pandas aggregate column and keep headerPandas 聚合列并保留标题
【发布时间】:2018-11-12 19:37:17
【问题描述】:

我有代码可以工作,但给我的数据没有标题有没有办法我可以编写这个代码,所以标题不会被删除?我知道一种方法是添加回标题,但有更好的方法吗?

我的代码:

df = pd.read_csv(“_data.csv",skiprows=[0], header=None)
df = df.groupby([2])[10].sum().astype(float)

数据:

A   B
1   2
1   1
2   3
2   4

我有类似上面的数据试图得到这个结果:

A   B
1   3
2   7

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    求和后尝试使用函数reset_index

    data = [{'a': 1, 'b': 2},{'a': 1, 'b': 1},{'a': 2, 'b': 3},{'a': 2, 'b': 4}]
    
    df = pd.DataFrame(data)
    df
       a  b
    0  1  2
    1  1  1
    2  2  3
    3  2  4
    
    df.groupby('a').sum().reset_index()
    
       a  b
    0  1  3
    1  2  7
    

    【讨论】:

      【解决方案2】:

      您应该指定分隔符(在您的情况下为几个空格),并且标题是第一行(=0,使用 python 索引),而不是按您想要的列分组。

      df = pd.read_csv("_data.csv", sep='\s*', header=0)
         A  B
      0  1  2
      1  1  1
      2  2  3
      3  2  4
      
      df = df.groupby(['A']).sum()
      
         B
      A   
      1  3
      2  7
      

      【讨论】:

      • 这是一个 csv 文件,当我这样做时会出错:sep='\s*',如果我不使用它并使用 header=0,这不会删除标题。
      • header=0 确实会使用第一行作为标题,您应该使用 header=None 将其删除(但问题询问如何保留它)。至于分隔符,我猜这取决于您的文件格式
      • 你用的是什么版本的python和pandas?文件是怎么调用的?
      • 如果我保留标题 sum() 会给出错误,因为列标题是字符串。
      • 您的情况下 read_csv 的结果是什么?也许您应该检查一下以了解为什么以下 group-by 不能正常工作。
      猜你喜欢
      • 2012-11-14
      • 2018-01-31
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2019-05-11
      • 2019-10-12
      相关资源
      最近更新 更多