gpt4 book ai didi

python - 对 Pandas DataFrame 中存在非数字值的所有列求和

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:51 25 4
gpt4 key购买 nike

我有以下数据集:

df = pd.DataFrame({'col1' : [12,3,4,5,'a',5], 'col2' : [1,5,'b',6,10,1]})

如果我运行 df.sum(axis=0, numeric_only=True),我会得到以下输出:

Series([], dtype: float64)

但是,如果我将非数字值更改为 None 那么它就可以正常工作。

所以,我的问题是,当存在非数字值时,如何找到数据集中所有列的总和?

最佳答案

我想你可以使用 to_numeric使用 apply 因为 to_numeric 仅适用于列 (Series):

print (df.apply(pd.to_numeric, errors='coerce').sum())
#same as
#print (df.apply(lambda x: pd.to_numeric(x, errors='coerce')).sum())
col1 29.0
col2 23.0
dtype: float64

另一个解决方案是 concatlist comprehension:

df = pd.concat([pd.to_numeric(df[col], errors='coerce') for col in df], axis=1).sum()
print (df)
col1 29.0
col2 23.0
dtype: float64

如果只有几列更快是重复代码:

df.col1 = pd.to_numeric(df.col1, errors='coerce')
df.col2 = pd.to_numeric(df.col2, errors='coerce')
print (df.sum())
col1 29.0
col2 23.0
dtype: float64

我认为 numeric_only=True 不适用于混合内容的列 - 带有字符串值的数字。

示例 - col1 是数字,col2 是非数字:

df = pd.DataFrame({'col1' : [1,3,4], 'col2' : ['1','5','b']})
print (df)
col1 col2
0 1 1
1 3 5
2 4 b

print (df.sum(numeric_only=True))
col1 8
dtype: int64

关于python - 对 Pandas DataFrame 中存在非数字值的所有列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40804706/

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