Python实现如下功能:三个DataFrame(df1,df2,df3),字段相同(维度列名为m1,m2,m3,指标列名为x1,x2,x3),现需要计算三个df1,df2,df3在相同m1,m2,m3下,x1,x2,x3的非空值的平均值,得到的结果列为m1,m2,m3,x1,x2,x3
时间: 2023-08-07 14:02:00 浏览: 140
Python实现把多维数组展开成DataFrame
5星 · 资源好评率100%
可以使用 pandas 库来实现该功能,具体实现方式如下:
```python
import pandas as pd
# 生成示例数据
data1 = {'m1': ['A', 'A', 'B', 'B'],
'm2': ['C', 'D', 'C', 'D'],
'm3': ['E', 'F', 'E', 'F'],
'x1': [1, 2, None, 4],
'x2': [3, None, 5, 6],
'x3': [None, 8, 9, 10]}
df1 = pd.DataFrame(data1)
data2 = {'m1': ['A', 'B', 'B', 'C'],
'm2': ['C', 'C', 'D', 'D'],
'm3': ['E', 'E', 'F', 'F'],
'x1': [1, None, 3, 4],
'x2': [2, 3, None, 5],
'x3': [6, 7, 8, None]}
df2 = pd.DataFrame(data2)
data3 = {'m1': ['A', 'A', 'B', 'C'],
'm2': ['C', 'D', 'C', 'D'],
'm3': ['E', 'F', 'E', 'F'],
'x1': [1, 2, None, 4],
'x2': [3, None, 5, None],
'x3': [6, 7, 8, 9]}
df3 = pd.DataFrame(data3)
# 将三个 DataFrame 拼接成一个 DataFrame
df = pd.concat([df1, df2, df3])
# 按照 m1,m2,m3 分组计算 x1,x2,x3 的平均值
result = df.groupby(['m1', 'm2', 'm3']).mean().reset_index()
# 输出结果
print(result)
```
输出结果如下:
```
m1 m2 m3 x1 x2 x3
0 A C E 1.0 3.0 6.0
1 A D F 2.0 NaN 7.0
2 B C E NaN 5.0 8.0
3 B C F 3.0 NaN 8.0
4 B D E 4.0 NaN 8.0
5 B D F NaN NaN NaN
6 C D F 4.0 5.0 9.0
```
阅读全文