gpt4 book ai didi

python - Pandas df.sum() 只创建 0

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:40 27 4
gpt4 key购买 nike

我有大量的 df 信息,我想在其中添加“总计”列。但是,当我使用 sum() 方法时,结果列中只填充了 0 个值。

这是我的 df 的一部分:

    COL NAME0  COL NAME1  COL NAME2  COL NAME3  COL NAME4
0 Alabama 4.099099 4.090001 2.042345 NaN
1 Alaska 1.396396 1.390001 1.000000 1.000000
2 Arizona 4.189189 NaN 2.003257 1.537777
3 Arkansas 2.927928 2.920001 2.208723 NaN
4 California 3.378378 3.780001 1.754930 2.012395

要添加 Total 列,我执行了以下操作:

df['Total'] = df.sum(axis=1)

它创建了以下 df:

    COL NAME0  COL NAME1  COL NAME2  COL NAME3  COL NAME4  Total
0 Alabama 4.099099 4.090001 2.042345 NaN 0.0
1 Alaska 1.396396 1.390001 1.000000 1.000000 0.0
2 Arizona 4.189189 NaN 2.003257 1.537777 0.0
3 Arkansas 2.927928 2.920001 2.208723 NaN 0.0
4 California 3.378378 3.780001 1.754930 2.012395 0.0

然后我尝试了一种不同的方法,将每一列一次添加到 Total 列:

for col in df:
df['Total'] = df['Total'] + df[col]

但是,这会导致 Total 列仅填充有 NaN 值。

我的猜测是 df 中现有的 NaN 值导致了 Total 列中的这种行为。这似乎是一项简单的任务,所以如果有什么我忽略了,请告诉我。任何建议/解决方案将不胜感激。

最佳答案

我建议用字符串过滤掉第一列并将所有其他列转换为 float :

df['Total'] = df.iloc[:, 1:].astype(float).sum(axis=1)

print (df.dtypes)
COL NAME0 object
COL NAME1 object
COL NAME2 object
COL NAME3 object
COL NAME4 object
dtype: object

df['Total'] = df.sum(axis=1)
print (df)
COL NAME0 COL NAME1 COL NAME2 COL NAME3 COL NAME4 Total
0 Alabama 4.099099 4.090001 2.042345 NaN 0.0
1 Alaska 1.396396 1.390001 1.000000 1.000000 0.0
2 Arizona 4.189189 NaN 2.003257 1.537777 0.0
3 Arkansas 2.927928 2.920001 2.208723 NaN 0.0
4 California 3.378378 3.780001 1.754930 2.012395 0.0

df['Total'] = df.iloc[:, 1:].astype(float).sum(axis=1)
print (df)
COL NAME0 COL NAME1 COL NAME2 COL NAME3 COL NAME4 Total
0 Alabama 4.099099 4.090001 2.042345 NaN 10.231445
1 Alaska 1.396396 1.390001 1.000000 1.000000 4.786397
2 Arizona 4.189189 NaN 2.003257 1.537777 7.730223
3 Arkansas 2.927928 2.920001 2.208723 NaN 8.056652
4 California 3.378378 3.780001 1.754930 2.012395 10.925704

如果以后需要处理列:

df =  df.astype(dict.fromkeys(df.columns[1:], 'float'))
print (df.dtypes)
COL NAME0 object
COL NAME1 float64
COL NAME2 float64
COL NAME3 float64
COL NAME4 float64
dtype: object


df['Total'] = df.sum(axis=1)
print (df)
COL NAME0 COL NAME1 COL NAME2 COL NAME3 COL NAME4 Total
0 Alabama 4.099099 4.090001 2.042345 NaN 10.231445
1 Alaska 1.396396 1.390001 1.000000 1.000000 4.786397
2 Arizona 4.189189 NaN 2.003257 1.537777 7.730223
3 Arkansas 2.927928 2.920001 2.208723 NaN 8.056652
4 California 3.378378 3.780001 1.754930 2.012395 10.925704

关于python - Pandas df.sum() 只创建 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57327920/

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