pandas marge两列,如果相同的列名,只保留有交集的数据,不生成x y什么的完整代码
时间: 2024-09-27 12:14:18 浏览: 63
Pandas库中的`merge()`函数通常用于合并两个DataFrame,如果有相同的列名,你可以使用`on`参数来指定合并键,并设置`how='inner'`来保留只有两个数据框都存在的交集部分。以下是一个简单的例子:
```python
import pandas as pd
# 假设你有两个DataFrame df1 和 df2
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
'value2': [5, 6, 7, 8]})
# 使用 merge() 函数并仅保留交集
merged_df = pd.merge(df1, df2, on='key', how='inner')
print(merged_df)
```
在这个例子中,`merged_df`将只包含键'key'在两个数据框中都存在的行,即'A'、'B'和'D'。
相关问题
pandas marge两列,如果相同的列名,留左边的列,不生成x y什么的
Pandas中的merge函数默认会合并两个DataFrame中相同列名的数据,如果你不想生成新的列名(如`x`和`y`),可以设置`how='left'`参数,并使用`suffixes`参数控制重复列名的处理方式。例如:
```python
import pandas as pd
# 假设我们有两列数据,df1和df2都有名为'column_name'的列
df1 = pd.DataFrame({'A': [1, 2, 3], 'column_name': ['a', 'b', 'c']})
df2 = pd.DataFrame({'B': [4, 5, 6], 'column_name': ['d', 'e', 'f']})
# 使用left join并保留左侧的列
merged_df = pd.merge(df1, df2, on='column_name', how='left')
# 默认suffixes将添加_1和_2作为列后缀区分,你可以自定义成其他形式
merged_df.columns = merged_df.columns.map(lambda x: f"{x[0]}" if x.endswith('_1') else x)
print(merged_df)
```
在这个例子中,`merged_df`将会包含`df1`的所有列,包括原始的`column_name`,以及从`df2`中匹配到的值。如果有冲突的列名,不会生成新的列名,而是直接保留左侧的数据。
阅读全文