Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pandas选择多列并在多列中填充na()的另一种方法_Python_Python 3.x_Pandas_Spyder_Valueerror - Fatal编程技术网

Python 使用pandas选择多列并在多列中填充na()的另一种方法

Python 使用pandas选择多列并在多列中填充na()的另一种方法,python,python-3.x,pandas,spyder,valueerror,Python,Python 3.x,Pandas,Spyder,Valueerror,我试图使用pandas从数据帧中选择三列[attacktype1、attacktype2、attacktype3],其数据类型为整数,并希望将0填充到这些列中,然后将这些列合计到一个新列中。[total_attacks] 数据集可从以下网站下载: 点击[此处] 我曾经尝试过一次将fillna0应用于一列,然后将它们合计成一个新的列 我的第一条路: da1=pd.read_csv'terror.csv',sep=',header=0,encoding='latin',na_值=['Missing'

我试图使用pandas从数据帧中选择三列[attacktype1、attacktype2、attacktype3],其数据类型为整数,并希望将0填充到这些列中,然后将这些列合计到一个新列中。[total_attacks]

数据集可从以下网站下载: 点击[此处]

我曾经尝试过一次将fillna0应用于一列,然后将它们合计成一个新的列

我的第一条路:

da1=pd.read_csv'terror.csv',sep=',header=0,encoding='latin',na_值=['Missing',''] da1.head 处理缺失值 da1['attacktype3']=da1['attacktype3']。填充0 da1['attacktype2']=da1['attacktype2']。填充0 da1['attacktype1']=da1['attacktype1']。填充0 da1['total_attacks']=da1['attacktype3']+da1['attacktype2']+da1['attacktype1'] country_txt是一个由不同国家组成的列。要查找仅适用于印度的汇总数据吗。因此,所应用的条件为国家(U txt)=“印度”。 a1=da1.querycountry\u txt=='India'.agg{'total\u attacks':np.sum} 打印件1 我的第二种方法不起作用:

da1=pd.read_csv'terror.csv',sep=',header=0,encoding='latin',na_值=['Missing',''] da1.head 处理缺失值 check1=Df.country\u txt==印度 store=Df[[attacktype1,attacktype2,attacktype3]] 攻击总数=Df.loc[check1,store].sumaxis=1 全方位攻击 首先使用进行筛选,然后将缺少的值替换为:

对于标量,一个数字输出相加和:


谢谢你@jezrael。但是我的第一个代码的预期输出不匹配。我想要一个名为Total column的新列,它给出了攻击的总数,其中所有三个coulmn[attacktype1,attacktype2,attacktype3]总计为一个。示例攻击总数等于35065。@Xavier-编辑的答案。将输出分配给新列。



I want to apply fillna(0) to multiple columns in a single line and also total those columns in an alternate and effective way.

The error that I get when I use my second way is:

ValueError: Cannot index with multidimensional key
check1 = Df.country_txt == "India"
cols = ["attacktype1","attacktype2","attacktype3"]

Df['Total_attack'] = Df.loc[check1, cols].fillna(0).sum(axis=1)
Total_attack = Df['Total_attack'].sum()
print (Total_attack)
35065.0