完成:sum()将数据帧中的int值作为字符串而不是整数添加

2024-10-17 08:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题似乎很简单,但我找不到答案。 我试图使用熊猫中的sum()来计算在阿尔巴尼亚有多少男女试图自杀,这是基于kaggle提供的数据集

代码:

import pandas as pd
pd.options.mode.chained_assignment = None

#Create a dataframe
suicide = pd.read_csv('who_suicide_statistics.csv', header=None)

#Rename column names because it was int
suicide = suicide.rename(columns={0: 'country', 1: 'year', 2: 'sex', 3: 'age', 4:'suicides_no', 5: 'population'})
#Delete first row because it was a duplicate with column names
suicide = suicide.iloc[1: , :]

#Filter values only with Albania
albania_suicide = suicide.loc[(suicide['country'] == 'Albania')]

#Delete rows with Nan values
albania_suicide.dropna(subset=['suicides_no'], inplace=True)

# Is it more women or men who attempts suicide?
print(albania_suicide.loc[albania_suicide['sex'] == 'female', 'suicides_no'].sum())

输出为:

"144600185403252701074201010771206420121378222161091122116760232109160191351646350029412262147151411491309620111733300000000000013814093209191750000006612272" 

这些数字被一个接一个地显示,就好像它们被当作字符串一样。 应该是14+4+6+0+0+18


Tags: csvnononenameswithitcolumnpd
2条回答

您的suicides_no列可能是字符串类型(数字字符串)。如果您确定这些值都应该是数字,您可以尝试,例如

df['suicides_no'].astype(int).sum()

或者在代码求和之前将数据类型永久转换为int:

df['suicides_no'] = df['suicides_no'].astype(int)

# then sum
df['suicides_no'].sum()

你试过这样的吗?很难知道为什么在没有那行代码的情况下要进行串联而不是求和

total = df['suicides_no'].astype(int).sum()

相关问题 更多 >