如何减去包含字符串类型值的两列?'---' 不表示任何值,应导致结果中出现 '---'。结果也应该是值类型字符串。来源df1 = pd.DataFrame({'x': ['a', 'b', 'c'], 'y': ['5', '---', '7']}) x y0 'a' '5'1 'b' '---'2 'c' '7'df2 = pd.DataFrame({'x': ['a', 'b', 'c'], 'y': ['1', '2', '---']}) x y0 'a' '1'1 'b' '2'2 'c' '---'目标df3 = df1 - df2 x y0 'a' '4'1 'b' '---'2 'c' '---'
2 回答

慕少森
TA贡献2019条经验 获得超9个赞
尝试:
df1.set_index('x').apply(lambda x: pd.to_numeric(x,errors='coerce')).sub(
df2.set_index('x').apply(lambda x: pd.to_numeric(x,errors='coerce'))).fillna('--')\
.reset_index()
x y
0 a 4
1 b --
2 c --

Helenr
TA贡献1780条经验 获得超4个赞
您可以使用pd.to_numeric将所有替换'---'为NaNs,也可以将所有值转换为floats:
df1['y'] = pd.to_numeric(df1['y'], errors='coerce')
df2['y'] = pd.to_numeric(df2['y'], errors='coerce')
只需减去两列并将结果存储在df1例如:
df1['y'] = (df1['y'] - df2['y']).replace(np.nan,'---')
x y
0 a 4
1 b ---
2 c ---
添加回答
举报
0/150
提交
取消