用python把2个DF分别按照一个列分别分组后循环,再把2个group按照另一个列分别循环后连接,循环不要缩进
时间: 2024-05-11 17:20:07 浏览: 6
可以使用 pandas 库中的 `groupby()` 函数对两个 DataFrame 进行分组操作,然后使用 `merge()` 函数将分组后的结果连接起来。代码如下:
```python
import pandas as pd
# 分组列名
group_col1 = 'col1'
group_col2 = 'col2'
# 两个 DataFrame
df1 = pd.DataFrame({'col1': ['A', 'B', 'A', 'B'], 'col2': [1, 2, 3, 4], 'col3': ['a', 'b', 'c', 'd']})
df2 = pd.DataFrame({'col1': ['A', 'B', 'A', 'B'], 'col2': [1, 2, 3, 4], 'col4': ['x', 'y', 'z', 'w']})
# 按照 group_col1 和 group_col2 分别对 df1 和 df2 进行分组
grouped_df1 = df1.groupby([group_col1, group_col2])
grouped_df2 = df2.groupby([group_col1, group_col2])
# 对分组后的结果进行循环遍历
for (key1, key2), group1 in grouped_df1:
group2 = grouped_df2.get_group((key1, key2))
# 将 group1 和 group2 按照另一个列名进行连接
merged_group = pd.merge(group1, group2, on='col1')
# 处理连接后的结果
print(merged_group)
```
上述代码中,`groupby()` 函数接受一个列表,其中包含需要分组的列名。例如,`df1.groupby([group_col1, group_col2])` 表示按照 `col1` 和 `col2` 两列进行分组。分组后的结果是一个字典,其中键是分组的 key,值是分组后的 DataFrame。
`merge()` 函数用于将两个 DataFrame 进行连接,其中 `on` 参数指定按照哪一列进行连接。连接后的结果是一个新的 DataFrame,可以对它进行处理或者输出。