pandas 两个dataframe取差集
时间: 2023-09-14 20:02:29 浏览: 231
可以使用 pandas 库中的 `merge` 方法来实现两个 DataFrame 的取差集。具体操作如下:
```python
import pandas as pd
# 两个 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
df2 = pd.DataFrame({'A': [2, 3, 4], 'B': ['b', 'c', 'd']})
# 取差集
diff_df = pd.merge(df1, df2, how='outer', indicator=True).query("_merge == 'left_only'").drop('_merge', axis=1)
print(diff_df)
```
输出:
```
A B
0 1 a
2 3 c
```
这里使用 `merge` 方法将两个 DataFrame 按照列进行合并,并标记合并方式为“外连接(outer)”,以便保留两个 DataFrame 中的所有行。然后使用 `query` 方法筛选出合并后只存在于第一个 DataFrame 中的行,即为差集。最后使用 `drop` 方法删除标记列 `_merge`。
相关问题
pandas 两个dataframe取差集并导出
可以使用pandas库中的merge函数,将两个dataframe进行合并,并设置参数indicator=True,这样就可以标记每行数据来自哪个dataframe。然后再根据标记筛选出只属于一个dataframe的数据,即为差集。最后再导出为csv文件。以下是示例代码:
```python
import pandas as pd
# 创建两个dataframe
df1 = pd.DataFrame({'A': ['a', 'b', 'c'], 'B': [1, 2, 3]})
df2 = pd.DataFrame({'A': ['a', 'd', 'e'], 'B': [1, 4, 5]})
# 合并两个dataframe
merged = pd.merge(df1, df2, on=['A', 'B'], how='outer', indicator=True)
# 筛选出只属于一个dataframe的数据
diff = merged.loc[merged['_merge'].isin(['left_only', 'right_only'])]
# 导出为csv文件
diff.to_csv('diff.csv', index=False)
```
当然,以上代码只是示例,实际应用中需要根据具体需求进行改动。
pandas两个dataframe求差集
可以使用pandas的merge函数来实现两个dataframe求差集的操作。具体步骤如下:
1. 使用merge函数将两个dataframe按照某一列进行合并,合并方式为outer,即保留所有行。
2. 使用isnull函数判断哪些行在第一个dataframe中出现,在第二个dataframe中没有出现,即为差集。
3. 使用loc函数获取差集。
示例代码如下:
```python
import pandas as pd
# 创建两个dataframe
df1 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]})
df2 = pd.DataFrame({'A': [3, 4, 5, 6], 'B': [7, 8, 9, 10]})
# 按照'A'列合并两个dataframe
merged_df = pd.merge(df1, df2, on='A', how='outer')
# 获取差集
diff_df = merged_df.loc[merged_df['B_x'].isnull()]
print(diff_df)
```
输出结果为:
```
A B_x B_y
4 5 NaN 9.
5 6 NaN 10.
1 5. NaN
1 2 6. NaN
```
其中,B_x列为第一个dataframe中的B列,B_y列为第二个dataframe中的B列。可以看到,差集为第一个dataframe中的第一、二行。
阅读全文