как сделать кадр данных суммы строк в pandas? - PullRequest
1 голос
/ 24 марта 2020

У меня есть фрейм данных, как показано ниже, и я хочу сделать сумму строки новым фреймом данных, а значения столбца 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 (), но получил тип объекта. но мне нужна датафрейм, например сумма 70 000 70 000 70 000 70 000

, поэтому я задаю вопрос здесь. заранее спасибо!

1 Ответ

1 голос
/ 24 марта 2020

Вы можете использовать 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

РЕДАКТИРОВАТЬ: если возможные столбцы не числовые c, используйте 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
...