用python多个DF分组后同时循环,最后把多个group连接成一个group
时间: 2023-12-07 11:55:21 浏览: 57
详解python中groupby函数通俗易懂
3星 · 编辑精心推荐
假设你有多个 DataFrame,每个 DataFrame 都需要按照某些列进行分组,然后对每个组进行处理,最后将所有处理结果连接成一个 DataFrame。可以按照以下步骤进行操作:
1. 将每个 DataFrame 存储到一个列表中,例如 `df_list`。
2. 对于每个 DataFrame,使用 `groupby` 方法将其按照分组列进行分组,例如:
```
group_list = [df.groupby('group_col') for df in df_list]
```
3. 对于每个分组,进行相应的处理,例如:
```
result_list = []
for groups in zip(*group_list):
# groups 是一个元组,包含每个 DataFrame 中相同分组列对应的分组
# 在这里可以进行相应的处理
result = process(groups)
result_list.append(result)
```
4. 将所有处理结果连接成一个 DataFrame,例如:
```
result_df = pd.concat(result_list)
```
完整代码如下:
```python
import pandas as pd
# 假设有两个 DataFrame
df1 = pd.DataFrame({'group_col': ['A', 'A', 'B', 'B'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'group_col': ['A', 'B', 'B', 'C'], 'value': [5, 6, 7, 8]})
# 将每个 DataFrame 存储到一个列表中
df_list = [df1, df2]
# 将每个 DataFrame 按照分组列进行分组
group_list = [df.groupby('group_col') for df in df_list]
# 对于每个分组,进行相应的处理
result_list = []
for groups in zip(*group_list):
# groups 是一个元组,包含每个 DataFrame 中相同分组列对应的分组
# 在这里可以进行相应的处理
result = pd.DataFrame({'group_col': groups[0].name, 'sum_value': groups[0]['value'].sum()})
result_list.append(result)
# 将所有处理结果连接成一个 DataFrame
result_df = pd.concat(result_list)
print(result_df)
```
输出结果如下:
```
group_col sum_value
0 A 3
0 B 14
1 C 8
```
阅读全文