Python 使用pandas选择多列并在多列中填充na()的另一种方法
我试图使用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 全方位攻击 首先使用进行筛选,然后将缺少的值替换为: 对于标量,一个数字输出相加和: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'
谢谢你@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