Python 3.x 如何在python中对分号分隔的列值求和
我有一个数据框,其值如下:Python 3.x 如何在python中对分号分隔的列值求和,python-3.x,pandas,Python 3.x,Pandas,我有一个数据框,其值如下: df = pd.DataFrame({'Column4': ['NaN;NaN;1;4','4;8','nan']} ) print (df) Column4 0 NaN;NaN;1;4 1 4;8 2 nan 我试着用下面的代码来得到总数 df['Sum'] = df['Column4'].apply(lambda x: sum(map(int, x.split(';')))) 我收到的错误消息如下所示 Val
df = pd.DataFrame({'Column4': ['NaN;NaN;1;4','4;8','nan']} )
print (df)
Column4
0 NaN;NaN;1;4
1 4;8
2 nan
我试着用下面的代码来得到总数
df['Sum'] = df['Column4'].apply(lambda x: sum(map(int, x.split(';'))))
我收到的错误消息如下所示
ValueError:基数为10的int()的文本无效:“NaN”
与expand=True
一起使用,用于DataFrame
,将每行转换为浮点数和sum
-默认情况下排除缺失值:
df['Sum'] = df['Column4'].str.split(';', expand=True).astype(float).sum(axis=1)
print (df)
Column4 Sum
0 NaN;NaN;1;4 5.0
1 4;8 12.0
2 nan 0.0
应更改您的解决方案:
f = lambda x: sum(int(y) for y in x.split(';') if not y in ('nan','NaN'))
df['Sum'] = df['Column4'].apply(f)
因为如果转换为浮点,则使用另一个数字获取NAN的mssing值:
df['Sum'] = df['Column4'].apply(lambda x: sum(map(float, x.split(';'))))
print (df)
Column4 Sum
0 NaN;NaN;1;4 NaN
1 4;8 12.0
2 nan NaN
您能否粘贴数据片段和更清晰的预期输出(您可以将它们粘贴到HTML片段中)?