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片段中)?