Python 获取列的总数
目标 我有一个熊猫数据框,如下所示,有多个列,我想得到列的总数,Python 获取列的总数,python,pandas,dataframe,sum,Python,Pandas,Dataframe,Sum,目标 我有一个熊猫数据框,如下所示,有多个列,我想得到列的总数,MyColumn 数据帧-df: 打印df 我的尝试: 我尝试使用groupby和.sum()获取列的总和: 这会导致以下错误: TypeError: 'instancemethod' object has no attribute '__getitem__' 预期产出 我希望输出结果如下所示: 319 或者,我希望使用名为TOTAL的新行编辑df,其中包含总计: X MyColu
MyColumn
数据帧-
df
:
打印df
我的尝试: 我尝试使用
groupby
和.sum()
获取列的总和:
这会导致以下错误:
TypeError: 'instancemethod' object has no attribute '__getitem__'
预期产出 我希望输出结果如下所示:
319
或者,我希望使用名为TOTAL
的新行
编辑df
,其中包含总计:
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
TOTAL 319
你应使用:
然后与系列一起使用
,在这种情况下,索引应设置为与需要求和的特定列相同:
df.loc['Total'] = pd.Series(df['MyColumn'].sum(), index = ['MyColumn'])
print (df)
X MyColumn Y Z
0 A 84.0 13.0 69.0
1 B 76.0 77.0 127.0
2 C 28.0 69.0 16.0
3 D 28.0 28.0 31.0
4 E 19.0 20.0 85.0
5 F 84.0 193.0 70.0
Total NaN 319.0 NaN NaN
因为如果传递标量,所有行的值都将被填充:
df.loc['Total'] = df['MyColumn'].sum()
print (df)
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
Total 319 319 319.0 319.0
另外两个解决方案与一起提供,请参见下面的应用程序:
df.at['Total', 'MyColumn'] = df['MyColumn'].sum()
print (df)
X MyColumn Y Z
0 A 84.0 13.0 69.0
1 B 76.0 77.0 127.0
2 C 28.0 69.0 16.0
3 D 28.0 28.0 31.0
4 E 19.0 20.0 85.0
5 F 84.0 193.0 70.0
Total NaN 319.0 NaN NaN
注意:自Pandas v0.20以来,
ix
已被弃用。改用loc
或iloc
。您可以在此处使用的另一个选项:
df.loc["Total", "MyColumn"] = df.MyColumn.sum()
# X MyColumn Y Z
#0 A 84.0 13.0 69.0
#1 B 76.0 77.0 127.0
#2 C 28.0 69.0 16.0
#3 D 28.0 28.0 31.0
#4 E 19.0 20.0 85.0
#5 F 84.0 193.0 70.0
#Total NaN 319.0 NaN NaN
您还可以使用
append()
方法:
df.append(pd.DataFrame(df.MyColumn.sum(), index = ["Total"], columns=["MyColumn"]))
更新: 如果需要为所有数值列追加总和,可以执行以下操作之一: 使用
append
以功能性方式执行此操作(不更改原始数据帧):
使用loc
在适当位置改变数据帧:
df.loc['total'] = df.select_dtypes(pd.np.number).sum()
df
# X MyColumn Y Z
#0 A 84.0 13.0 69.0
#1 B 76.0 77.0 127.0
#2 C 28.0 69.0 16.0
#3 D 28.0 28.0 31.0
#4 E 19.0 20.0 85.0
#5 F 84.0 193.0 70.0
#total NaN 638.0 800.0 796.0
与获取数据帧的长度类似,
len(df)
,以下内容适用于pandas和blaze:
Total = sum(df['MyColumn'])
或者
Total = sum(df.MyColumn)
print Total
作为另一种选择,您可以执行以下操作
Group Valuation amount
0 BKB Tube 156
1 BKB Tube 143
2 BKB Tube 67
3 BAC Tube 176
4 BAC Tube 39
5 JDK Tube 75
6 JDK Tube 35
7 JDK Tube 155
8 ETH Tube 38
9 ETH Tube 56
下面的脚本,您可以用于上面的数据
import pandas as pd
data = pd.read_csv("daata1.csv")
bytreatment = data.groupby('Group')
bytreatment['amount'].sum()
有两种方法可以求一列的和
dataset=pd.read\u csv(“data.csv”)
1:总和(数据集.列名称)
2:数据集['Column_Name'].sum()
如果这方面有任何问题,请纠正我。那太好了:)谢谢你的解释,我可以问一下
.loc
在上面的例子中做了什么吗?loc
是用来做什么的。at
也用于放大设置,请参见最后一次编辑。谢谢,有什么更好的方法吗?嗯,文档上说the.loc/.ix/[]当为该轴设置不存在的键时,操作可以执行放大。
,因此loc
或ix
或[]
。在next is writes中,如果缺少索引器,at可以像上面一样放大对象。
因此所有方法都很好,但我认为at
是最快的。要说明熊猫为什么不是蟒蛇,只需看看关于如何简单求和列的混淆。所有列的和如何?1.st exampe:FutureWarning:pandas.np模块已弃用,将在未来版本中从pandas中删除。改为直接导入numpy
df.loc['total'] = df.select_dtypes(pd.np.number).sum()
df
# X MyColumn Y Z
#0 A 84.0 13.0 69.0
#1 B 76.0 77.0 127.0
#2 C 28.0 69.0 16.0
#3 D 28.0 28.0 31.0
#4 E 19.0 20.0 85.0
#5 F 84.0 193.0 70.0
#total NaN 638.0 800.0 796.0
Total = sum(df['MyColumn'])
Total = sum(df.MyColumn)
print Total
Group Valuation amount
0 BKB Tube 156
1 BKB Tube 143
2 BKB Tube 67
3 BAC Tube 176
4 BAC Tube 39
5 JDK Tube 75
6 JDK Tube 35
7 JDK Tube 155
8 ETH Tube 38
9 ETH Tube 56
import pandas as pd
data = pd.read_csv("daata1.csv")
bytreatment = data.groupby('Group')
bytreatment['amount'].sum()