【问题标题】:how to make row sum data frame in pandas?如何在熊猫中制作行和数据框?
【发布时间】:2020-03-24 09:20:29
【问题描述】:

我的数据框如下 我想做一行和新的数据框 a,b,c,d 列值是字符串。

      name  a         b     c      d 
      aa.   10,000  1,000 1,000  1,000
      bb.   10,000  1,000 1,000  1,000
      cc.   10,000  1,000 1,000  1,000
      dd.   10,000  1,000 1,000  1,000
      ee.   10,000  1,000 1,000  1,000
      ff.   10,000  1,000 1,000  1,000
      gg.   10,000  1,000 1,000  1,000

例如,新的行总和数据框应如下所示

  sum   70,000  70,000 70,000  70,000

我尝试使用 df.sumO() 但得到了一个对象类型。但是我需要 是像 sum 70,000 70,000 70,000 70,000 这样的数据框

所以我在这里提问。提前谢谢你!

【问题讨论】:

  • name 是列还是索引?如果索引使用df.loc['sum'] = df.sum()
  • 名称只是列

标签: pandas rowsum


【解决方案1】:

您可以在所有列中使用sum,然后将sum 值设置为name 列的最后一个值:

i = len(df)
df.loc[i] = df.sum()
df.loc[i, 'name'] = 'sum'
print (df)
  name   a   b   c   d
0  aa.   1   1   1   1
1  bb.   1   0   0   1
2  cc.   3   4   4   4
3  dd.   2   2   2   2
4  ee.   1   1   1   1
5  ff.   1   1   1   1
6  gg.   1   1   1   1
7  sum  10  10  10  11

编辑:如果可能的列是非数字的,则使用 to_numeric 对所有没有第一列的列,获取总和并将 name 值添加到 Series,最后分配新行:

s = df.iloc[:, 1:].apply(pd.to_numeric, errors='coerce').sum()
s.loc['name'] = 'sum'
df.loc[len(df)] = s

print (df)
  name   a   b   c   d
0  aa.   1   1   1   1
1  bb.   1   0   0   1
2  cc.   3   4   4   4
3  dd.   2   2   2   2
4  ee.   1   1   1   1
5  ff.   1   1   1   1
6  gg.   1   1   1   1
7  sum  10  10  10  11

【讨论】:

  • 如果 a,b,c,d 值是字符串,我如何将其转换为数字并求和?
  • @jerryhan - 值是从文件生成的吗?可以使用df = df.read_csv(file, thousands=',') 吗?
猜你喜欢
  • 2023-02-08
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2022-01-17
  • 2022-06-11
  • 2020-05-03
相关资源
最近更新 更多