汇总熊猫中的两个对象列

时间:2019-07-10 15:19:59

标签: pandas object sum

将两个具有dtype对象的相似列组合在一起时出现问题。由于这两列相同,所以它们永远不会在同一行中具有值。列中的所有内容都是整数,但是有一些nan值和“ $ 0”,我尝试过的所有解决方案似乎都没有绕过。数据如下:

Actual    MTD Actual 
nan       3
nan       $0  
nan       nan
3         nan
2         nan
1         nan

我尝试将列更改为字符串类型,然后更改为整数类型。我也尝试用0填充nan值,但这似乎不起作用

我尝试过的方法:
    1. df[["Actual", "MTD Actual"]].sum(axis=1)
    2. df['Actual'].add(df['MTD Actual'], fill_value=0)
    3. pd.to_numeric(df['MTD Actual'])

相应的错误消息:
    1.将求和,但整列为NaN
    2.返回“ +不支持的操作数类型:'int'和'str'“
    3.无法在位置3266处解析字符串“ $ 0”

我希望输出为:

Actual     
3      
0         
nan       
3         
2         
1         

1 个答案:

答案 0 :(得分:0)

您有两个不同的问题。首先,您要将非数字列转换为数字值。其次,您希望对各列求和,在所有行均为nan的地方保留nan值,否则将其视为0

这是一个可行的解决方案:

df.loc[df.any(axis=1)] = df.replace('[\$,]', '', regex=True).astype(float).fillna(0)
df = df.sum(axis=1)

正则表达式删除美元符号和逗号。 .astype(float)将数据转换为数字,而.fillna(0)替换了nandf.loc[df.any(axis=1)]意味着我们仅更改至少有一个非nan值的行的值。

相关问题