You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas:无法对DataFrame执行减法,如何提取df1中独有的行?

提取DataFrame独有行时的错误分析与解决方法

数据情况

df1内容:

colA    colB
0   e5b1b9fc-ade9-4501-a66b-ef2ecd57483e.d9967f258...  2ZWR52QYZ86H
1   8d127d82-cfa4-421f-9081-cf35132b8248.f0865b3b9...  61RPLMR5BFFT
2   005c8e84-98b4-402d-a24e-6a63edad0598.16b6f0f9f...  7L256IQTB1M1
3   d87f6dfd-1c55-4ce5-9b84-e80b6aa958d8.3f0901c7f...  3H9SLNATBJ01
4   cf89c9dd-004e-40e7-8120-3397ce5fd97e.f571bc175...  4Z8RT5VZNOQ8
5   9eebc606-e8d0-40e3-9ba5-6d3e1b77bc64.0dc42d528...  1DEOAHZL2JFC
6   7112aef1-5fa0-4459-aa1b-15cba2f96ec5.6a9ecb28d...  2CIISYGAAV69
7   e30d901c-34e6-4974-9b9e-1fe206ed6fca.701f1358e...  2NLLJ70RXKW2
8   13677989-8979-4422-a471-7fda22ea4f6d.e00051e45...  6P60G721DVHK

df2内容:

0   e5b1b9fc-ade9-4501-a66b-ef2ecd57483e.d9967f258...  2ZWR52QYZ86H
1   8d127d82-cfa4-421f-9081-cf35132b8248.f0865b3b9...  61RPLMR5BFFT
2   005c8e84-98b4-402d-a24e-6a63edad0598.16b6f0f9f...  7L256IQTB1M1
3   d87f6dfd-1c55-4ce5-9b84-e80b6aa958d8.3f0901c7f...  3H9SLNATBJ01
4   cf89c9dd-004e-40e7-8120-3397ce5fd97e.f571bc175...  4Z8RT5VZNOQ8

错误操作与报错信息

尝试用以下代码提取df1中不存在于df2的行:

df1.subtract(df2)

出现错误:

result[mask] = op(xrav[mask], yrav[mask])
TypeError: unsupported operand type(s) for -: 'str' and 'str'

错误原因

subtract()方法的作用是对两个DataFrame的数值型列执行逐元素减法运算,而你的DataFrame中colA和colB都是字符串类型,字符串不支持减法操作,因此抛出类型错误。而且这个方法本身就不是用来筛选差异行的工具。

正确解决方法

下面提供几种常用的提取df1独有行的方式:

方法1:使用merge进行左连接并筛选

# 左连接后筛选df2中匹配不到的行
diff_df = df1.merge(df2, on=['colA', 'colB'], how='left', indicator=True)
diff_df = diff_df[diff_df['_merge'] == 'left_only'].drop('_merge', axis=1)

方法2:使用isin结合布尔索引

# 先将每行转为元组,再判断是否不在df2的行集合中
df1_rows = df1.apply(tuple, axis=1)
df2_rows = df2.apply(tuple, axis=1)
diff_df = df1[~df1_rows.isin(df2_rows)]

方法3:使用concat+drop_duplicates

# 合并两个DataFrame后删除重复行,保留只出现一次的行
combined = pd.concat([df1, df2])
diff_df = combined.drop_duplicates(keep=False)

内容的提问来源于stack exchange,提问作者AbtPst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:48:30