pandas 中具有字符串和数字的总列

use*_*867 2 pandas

我需要对第一行包含字符串的列和 b 列求和

>>> df
   a  b
0  c  d
1  1  2
2  3  4
>>> df['sum'] = df.sum(1)
>>> df
   a  b sum
0  c  d  cd
1  1  2   3
2  3  4   7
Run Code Online (Sandbox Code Playgroud)

我只需要添加数值并获得类似的输出

>>> df
   a  b sum
0  c  d  "dummyString/NaN"
1  1  2   3
2  3  4   7
Run Code Online (Sandbox Code Playgroud)

我只需要添加一些列

df['sum']=df['a']+df['b']

jez*_*ael 5

如果混合数据 - 数字与字符串的解决方案:

sum我认为最简单的是将by后的非数值转换to_numericNaNs:

df['sum'] = pd.to_numeric(df[['a','b']].sum(1), errors='coerce')
Run Code Online (Sandbox Code Playgroud)

或者:

df['sum'] = pd.to_numeric(df['a']+df['b'], errors='coerce')

print (df)
   a  b  sum
0  c  d  NaN
1  1  2  3.0
2  3  4  7.0
Run Code Online (Sandbox Code Playgroud)

编辑:

解决方案 ID 号是字符串表示形式 - 首先转换为数字,然后sum

df['sum'] = pd.to_numeric(df['a'], errors='coerce') + pd.to_numeric(df['b'], errors='coerce')
print (df)
   a  b  sum
0  c  d  NaN
1  1  2  3.0
2  3  4  7.0
Run Code Online (Sandbox Code Playgroud)

或者:

df['sum'] = (df[['a', 'b']].apply(lambda x: pd.to_numeric(x, errors='coerce'))
                           .sum(axis=1, min_count=1))
print (df)
   a  b  sum
0  c  d  NaN
1  1  2  3.0
2  3  4  7.0
Run Code Online (Sandbox Code Playgroud)