首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在dataframe末尾添加某个列的和

如何在dataframe末尾添加某个列的和
EN

Stack Overflow用户
提问于 2019-09-15 09:50:39
回答 4查看 2.3K关注 0票数 2

我有一只有11栏的熊猫数据。我想将第9列和第10列的所有值加到表的末尾。到目前为止,我尝试了两种方法:

  • 使用dataframe.iloc[rownumber, 8]将数据分配给单元格。这将导致一个超出界限的错误。
  • 使用以下代码创建带有一些空白的向量:‘’:
代码语言:javascript
复制
total = ['', '', '', '', '', '', '', '', dataframe['Column 9'].sum(), dataframe['Column 10'].sum(), '']
dataframe = dataframe.append(total)

结果并不好,因为它把总向量作为垂直向量添加到末尾,而不是水平向量。我能做些什么来解决这个问题?

EN

回答 4

Stack Overflow用户

发布于 2019-09-15 10:10:31

您需要与ignore_index=True一起使用pandas.DataFrame.append

因此,请使用:

代码语言:javascript
复制
dataframe=dataframe.append(dataframe[['Column 9','Column 10']].sum(),ignore_index=True).fillna('')

示例

代码语言:javascript
复制
import pandas as pd
import numpy as np
df=pd.DataFrame()
df['col1']=[1,2,3,4]
df['col2']=[2,3,4,5]
df['col3']=[5,6,7,8]
df['col4']=[5,6,7,8]

使用附录:

代码语言:javascript
复制
df=df.append(df[['col2','col3']].sum(),ignore_index=True)
print(df)


   col1  col2  col3  col4
0   1.0   2.0   5.0   5.0
1   2.0   3.0   6.0   6.0
2   3.0   4.0   7.0   7.0
3   4.0   5.0   8.0   8.0
4   NaN  14.0  26.0   NaN

Whitout NaN值:

代码语言:javascript
复制
df=df.append(df[['col2','col3']].sum(),ignore_index=True).fillna('')
print(df)

  col1  col2  col3 col4
0    1   2.0   5.0    5
1    2   3.0   6.0    6
2    3   4.0   7.0    7
3    4   5.0   8.0    8
4       14.0  26.0     
票数 2
EN

Stack Overflow用户

发布于 2019-09-15 10:13:02

用和创建新的DataFrame。这个示例DataFrame有'a‘和'b’列。df1是需要总结的DataFrame,df3是一行DataFrame,只有和:

代码语言:javascript
复制
data = [[df1.a.sum(),df1.b.sum()]]
df3 = pd.DataFrame(data,columns=['a','b'])

然后将其附加到结尾:

代码语言:javascript
复制
df1.append(df3)
票数 1
EN

Stack Overflow用户

发布于 2019-09-15 10:42:17

IICU,这是您所需要的(更改编号8和9以满足您的需要)

代码语言:javascript
复制
df['total']=df.iloc[ : ,[8,9]].sum(axis=1) #horizontal sum
df['total1']=df.iloc[ : ,[8,9]].sum().sum() #Vertical sum
df.loc['total2']=df.iloc[ : ,[8,9]].sum() # vertical sum in rows for only columns 8 & 9

示例

代码语言:javascript
复制
a=np.arange(0, 11, 1)
b=np.random.randint(10, size=(5,11))
df=pd.DataFrame(columns=a, data=b)

    0   1   2   3   4   5   6   7   8   9   10
0   0   5   1   3   4   8   6   6   8   1   0
1   9   9   8   9   9   2   3   8   9   3   6
2   5   7   9   0   8   7   8   8   7   1   8
3   0   7   2   8   8   3   3   0   4   8   2
4   9   9   2   5   2   2   5   0   3   4   1

**output**
    0   1   2   3   4   5   6   7   8   9   10  total   total1
0   0.0     5.0     1.0     3.0     4.0     8.0     6.0     6.0     8.0     1.0     0.0     9.0     48.0
1   9.0     9.0     8.0     9.0     9.0     2.0     3.0     8.0     9.0     3.0     6.0     12.0    48.0
2   5.0     7.0     9.0     0.0     8.0     7.0     8.0     8.0     7.0     1.0     8.0     8.0     48.0
3   0.0     7.0     2.0     8.0     8.0     3.0     3.0     0.0     4.0     8.0     2.0     12.0    48.0
4   9.0     9.0     2.0     5.0     2.0     2.0     5.0     0.0     3.0     4.0     1.0     7.0     48.0
total2  NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN     31.0    17.0    NaN     NaN     NaN
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57942952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档