在 Pandas 中,如果你有两个 DataFrame 并且想要取某个字段的差集,可以使用 `set` 操作来实现。这可以帮助你找到在一个 DataFrame 中存在但在另一个 DataFrame 中不存在的值。

以下是一个示例,演示如何取两个 DataFrame 在某个字段上的差集:

 示例数据

假设我们有两个 DataFrame `df1` 和 `df2`,它们都有一个共同的字段 `id`:

python
import pandas as pd

data1 = {
    'id': [1, 2, 3, 4, 5],
    'value': ['A', 'B', 'C', 'D', 'E']
}

data2 = {
    'id': [4, 5, 6, 7, 8],
    'value': ['D', 'E', 'F', 'G', 'H']
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

print("DataFrame 1:")
print(df1)
print("\nDataFrame 2:")
print(df2)


 取字段的差集

我们希望找到在 `df1` 中存在但在 `df2` 中不存在的 `id` 值。

#### 方法一:使用 `set` 操作

python
 将 'id' 字段转换为集合
set1 = set(df1['id'])
set2 = set(df2['id'])

 取差集
difference = set1 - set2
print("\nDifference (in df1 but not in df2):")
print(difference)


#### 方法二:使用 Pandas 的布尔索引

python
 使用 Pandas 的布尔索引取差集
difference_df = df1[~df1['id'].isin(df2['id'])]
print("\nRows in df1 but not in df2 based on 'id':")
print(difference_df)


 完整代码

以下是完整代码的示例:

python
import pandas as pd

 示例数据
data1 = {
    'id': [1, 2, 3, 4, 5],
    'value': ['A', 'B', 'C', 'D', 'E']
}

data2 = {
    'id': [4, 5, 6, 7, 8],
    'value': ['D', 'E', 'F', 'G', 'H']
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

print("DataFrame 1:")
print(df1)

print("\nDataFrame 2:")
print(df2)

 使用 set 操作取差集
set1 = set(df1['id'])
set2 = set(df2['id'])
difference = set1 - set2
print("\nDifference (in df1 but not in df2):")
print(difference)

 使用 Pandas 的布尔索引取差集
difference_df = df1[~df1['id'].isin(df2['id'])]
print("\nRows in df1 but not in df2 based on 'id':")
print(difference_df)


 输出结果

plaintext
DataFrame 1:
   id value
0   1     A
1   2     B
2   3     C
3   4     D
4   5     E

DataFrame 2:
   id value
0   4     D
1   5     E
2   6     F
3   7     G
4   8     H

Difference (in df1 but not in df2):
{1, 2, 3}

Rows in df1 but not in df2 based on 'id':
   id value
0   1     A
1   2     B
2   3     C


这个示例展示了如何找到在 `df1` 中存在但在 `df2` 中不存在的 `id` 值。你可以根据需要选择适合的方法。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐