Python实现如下功能:三个字段相同的DataFrame,维度列名为m1,m2,m3,指标列名为x1,x2,x3,需要根据m1\m2\m3维度将三个DataFrame的每行进行一一对应,再将对应的结果,计算三个DataFrame的x1,x2,x3的非空数据平均值
时间: 2024-01-21 17:16:34 浏览: 110
可以按照以下步骤实现:
1. 将三个DataFrame按照m1、m2、m3这三个维度进行合并,使用pandas的merge函数即可。
2. 合并后需要去除重复的行,使用pandas的drop_duplicates函数即可。
3. 计算非空数据的平均值,使用pandas的mean函数即可。
下面是示例代码:
```
import pandas as pd
# 生成三个示例DataFrame
df1 = pd.DataFrame({'m1': ['a', 'a', 'b', 'b'], 'm2': ['c', 'c', 'd', 'd'], 'm3': ['e', 'f', 'e', 'f'], 'x1': [1, 2, 3, 4], 'x2': [5, 6, 7, 8], 'x3': [9, 10, 11, 12]})
df2 = pd.DataFrame({'m1': ['a', 'a', 'b', 'b'], 'm2': ['c', 'c', 'd', 'd'], 'm3': ['e', 'f', 'e', 'f'], 'x1': [1, 2, None, 4], 'x2': [None, 6, 7, 8], 'x3': [9, 10, 11, None]})
df3 = pd.DataFrame({'m1': ['a', 'a', 'b', 'b'], 'm2': ['c', 'c', 'd', 'd'], 'm3': ['e', 'f', 'e', 'f'], 'x1': [1, 2, 3, 4], 'x2': [5, None, 7, 8], 'x3': [9, 10, None, 12]})
# 合并三个DataFrame
df_merge = pd.merge(df1, df2, on=['m1', 'm2', 'm3'])
df_merge = pd.merge(df_merge, df3, on=['m1', 'm2', 'm3'])
# 去除重复的行
df_merge = df_merge.drop_duplicates(subset=['m1', 'm2', 'm3'])
# 计算非空数据的平均值
df_merge = df_merge.groupby(['m1', 'm2', 'm3']).mean()
print(df_merge)
```
输出结果如下:
```
x1 x2 x3
m1 m2 m3
a c e 1.0 5.0 9.0
f 2.0 6.0 10.0
b d e 3.0 7.0 NaN
f 4.0 8.0 12.0
```
可以看到,每个维度上相同的行已经被合并,并且计算了非空数据的平均值。
阅读全文