为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas DataFrame:减去字符串数据类型的列

Pandas DataFrame:减去字符串数据类型的列

慕尼黑的夜晚无繁华 2022-01-11 19:51:08
如何减去包含字符串类型值的两列?'---' 不表示任何值,应导致结果中出现 '---'。结果也应该是值类型字符串。来源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  --


查看完整回答
反对 回复 2022-01-11
?
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  ---


查看完整回答
反对 回复 2022-01-11
  • 2 回答
  • 0 关注
  • 270 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号