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

在R语言中移除与另一数据框列名不匹配的数据框行

需求说明

现有两个DataFrame:

  • df1(列名是Name、A、B、D):
Name A B D
1
2
3
4
  • df2(第一列是Type,行值为A、B、C、D):
Type Cow Cat Dog
A
B
C
D

要删掉df2里那些Type值不在df1列名里的行——比如df1没有C列,所以df2的C行得删掉,最终要得到这样的结果:

Type Cow Cat Dog
A
B
D
实现方法

用Pandas的isin()方法就能轻松搞定,代码如下:

import pandas as pd

# 先构造符合题目结构的df1和df2
df1 = pd.DataFrame(columns=['Name', 'A', 'B', 'D'], data=[[1], [2], [3], [4]])
df2 = pd.DataFrame({
    'Type': ['A', 'B', 'C', 'D'],
    'Cow': ['', '', '', ''],
    'Cat': ['', '', '', ''],
    'Dog': ['', '', '', '']
})

# 提取df1里除了Name之外的列名,这些是我们要保留的Type值
valid_types = df1.columns.drop('Name')
# 筛选df2,只保留Type在valid_types里的行
filtered_df2 = df2[df2['Type'].isin(valid_types)]

# 输出结果
print(filtered_df2)

代码解释

  1. 先按题目结构构造两个测试用的DataFrame
  2. df1.columns.drop('Name') 拿到df1里需要匹配的列名(A、B、D)
  3. df2['Type'].isin(valid_types) 生成布尔列表,标记哪些行的Type值是有效的
  4. 用这个布尔列表筛选df2,就能得到去掉无效行后的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:50:27