用python多个DF分组后同时循环,最后把多个group连接成一个group
时间: 2023-12-07 22:01:40 浏览: 30
可以使用`pandas.concat()`函数将多个group连接成一个group。具体步骤如下:
1. 将要分组的dataframe按照需要分组的列进行分组,得到一个由多个group组成的字典(groupby对象)。
2. 定义一个空的dataframe,用于存储最终连接后的结果。
3. 遍历每个group,对每个group执行需要的操作,得到处理后的结果。
4. 将处理后的结果添加到空的dataframe中。
5. 最后使用`pandas.concat()`函数将所有group连接成一个group。
下面是一个示例代码:
```python
import pandas as pd
# 定义一个dataframe,用于演示
df1 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]})
df2 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [9, 10, 11, 12]})
df3 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [13, 14, 15, 16]})
df_list = [df1, df2, df3]
# 按照'A'列分组
grouped = [df.groupby('A') for df in df_list]
# 定义一个空的dataframe,用于存储最终连接后的结果
result = pd.DataFrame()
# 遍历每个group,对每个group执行需要的操作,得到处理后的结果
for group in grouped:
for name, df in group:
# 这里可以对每个group执行需要的操作
# 比如将每个group的'B'列求和
df_sum = df['B'].sum()
# 将处理后的结果添加到空的dataframe中
result = result.append({'A': name, 'B_sum': df_sum}, ignore_index=True)
# 使用pandas.concat()函数将所有group连接成一个group
result_group = result.groupby('A').sum()
print(result_group.head())
```
输出结果:
```
B_sum
A
1.0 27.0
2.0 30.0
3.0 33.0
4.0 36.0
```
注意,上面的示例代码中,每个group的'A'列的取值都是一样的,这是为了方便演示。在实际应用中,每个group的'A'列的取值可能不一样,因此需要根据实际情况进行修改。