我需要对第一行包含字符串的列和 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']
如果混合数据 - 数字与字符串的解决方案:
sum我认为最简单的是将by后的非数值转换to_numeric为NaNs:
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)
| 归档时间: |
|
| 查看次数: |
2341 次 |
| 最近记录: |