df_merged = pd.merge(df1, df2, on='公开(公告)号')留下匹配不同的行
时间: 2024-03-23 12:40:05 浏览: 134
你可以通过添加参数`how='outer'`来保留`df1`和`df2`中未匹配的行,具体代码如下:
```
df_merged = pd.merge(df1, df2, on='公开(公告)号', how='outer', indicator=True)
df_unmatched = df_merged[df_merged['_merge'] != 'both']
```
其中`_merge`列表示该行来自哪个数据框,`both`表示来自两个数据框的匹配行,`left_only`表示来自`df1`的未匹配行,`right_only`表示来自`df2`的未匹配行。因此,`df_unmatched`即为匹配不同的行。
相关问题
df_merged = pd.merge(df1, df2, on='公开(公告)号')只保留df1中未匹配的行
你可以使用参数`how='left'`将`df1`左连接到`df2`,然后筛选出`df_merged`中`df1`未匹配的行,代码如下:
```python
df_merged = pd.merge(df1, df2, on='公开(公告)号', how='left')
df_unmatched = df_merged[df_merged['df2中的列'].isnull()]
```
其中,`df2中的列`是`df2`中用于匹配的列名。`df_unmatched`即为`df1`未匹配的行。
# 读取CSV文件 df1 = pd.read_csv('day01.csv') df2 = pd.read_csv('app_class.csv') # 比对两列数据 merged_df = df1.merge(df2, on='appid', how='inner') merged_df['appid'] = merged_df['type'] # 保留相同的数据 merged_df.to_csv('day01.csv', index=False) merged_df KeyError: 'type'
出现`KeyError: 'type'`的错误是因为在`merged_df`中不存在名为`type`的列。这可能是由于在使用`merge()`函数指定的连接键(`on='appid'`)不正确。
请确保在使用`merge()`函数进行合并时,指定的连接键在两个DataFrame对象中都存在,并且列名一致。
以下是修正代码的示例:
```python
import pandas as pd
# 读取CSV文件
df1 = pd.read_csv('day01.csv')
df2 = pd.read_csv('app_class.csv')
# 比对两列数据
merged_df = df1.merge(df2, on='appid', how='inner')
merged_df['appid'] = merged_df['class']
# 保留相同的数据
merged_df.to_csv('day01.csv', index=False)
merged_df
```
在上述代码中,我们假设要比对的列为`appid`,且在`df2`中有一个名为`class`的列。因此,在使用`merge()`函数时,我们将连接键指定为`on='appid'`。然后,我们将`merged_df['appid']`赋值为`merged_df['class']`,以将相同数据转换为另一列数据。
最后,我们使用`to_csv()`函数将结果保存到新的CSV文件中,并输出`merged_df`以查看结果。
请确保根据实际情况调整列名和连接键的值,以满足你的需求。
阅读全文
相关推荐
















