gpt4 book ai didi

python - 使用 pandas 选择多列并在多列中 fillna() 的另一种方法

转载 作者:行者123 更新时间:2023-12-01 07:51:15 25 4
gpt4 key购买 nike

我试图选择三列[“attacktype1”,“attacktype2”,“attacktype3”],其数据类型是使用pandas的数据框中的整数,并且想要将na(0)填充到这些列中并将这些列总计为一个新的列。[“Total_attacks”]

数据集可以从以下位置下载:点击【这里】https://s3.amazonaws.com/datasetsgun/data/terror.csv

我尝试一次将 fillna(0) 应用到一列,然后将它们总计到一个新的单列中。

我的第一种方法:

da1 = pd.read_csv('terror.csv', sep = ',', header=0 , encoding='latin' , na_values=['Missing', ' '])
da1.head()
#Handling missing values
da1['attacktype3'] = da1['attacktype3'].fillna(0)
da1['attacktype2'] = da1['attacktype2'].fillna(0)
da1['attacktype1'] = da1['attacktype1'].fillna(0)
da1['total_attacks'] = da1['attacktype3'] + da1['attacktype2'] + da1['attacktype1']

#country_txt is a column which consists of different countries.Want to find "Total_atacks" only for India. Therefore, the condition applied is country_txt=='India'.

a1 = da1.query("country_txt=='India'").agg({'total_attacks':np.sum})
print(a1)

我的第二种方法(不起作用):

da1 = pd.read_csv('terror.csv', sep = ',', header=0 , encoding='latin' , na_values=['Missing', ' '])
da1.head()
#Handling missing values
check1=Df.country_txt=="India"
store=Df[["attacktype1","attacktype2","attacktype3"]].apply(lambda x:x.fillna(0))

Total_attack=Df.loc[check1,store].sum(axis=1)
print(Total_attack)



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

最佳答案

首先按boolean indexing过滤与 DataFrame.loc然后将缺失值替换为 DataFrame.fillna :

check1 = Df.country_txt == "India"
cols = ["attacktype1","attacktype2","attacktype3"]

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

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

Total_attack = Df['Total_attack'].sum()
print (Total_attack)
35065.0

关于python - 使用 pandas 选择多列并在多列中 fillna() 的另一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56205958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com