我想对Pandas中三个不同数据帧中不同长度的三列进行元素平均。例如:
df_1:
c1 | c2 | c3
0 | 1 | 2
1 | 2 | 3
2 | 3 | 4
df_2:
c1 | c2 | c3
1 | 2 | 3
1 | 2 | 3
1 | 2 | 3
df_3:
c1 | c2 | c3
3 | 2 | 1
1 | 2 | 3
3 | 2 | 1
我想平均c3的每个元素,并将其保存在新的 df_4 中:
c1 | c2 | c3
3 | 2 | (2+3+1)/3
1 | 2 | (3+3+3)/3
3 | 2 | (4+3+1)/3
我尝试了以下仅返回NaN值的方法:
df_1_c3 = df_1.loc[:,'c3']
df_2_c3 = df_2.loc[:,'c3']
df_3_c3 = df_3.loc[:,'c3']
adc_avg = pd.DataFrame((df_1_c3 + df_2_c3 + df_3_c3 )/3)
答案 0 :(得分:0)
尝试以下操作(根据您的描述,我认为df_4的c1,c2列与df_3相同):
df_4=df_3.copy()
df_4['c3']=[sum(i)/3 for i in zip(df_1.c3, df_2.c3, df_3.c3)]
答案 1 :(得分:0)
您可以sum
来自每个df的所有c3
列,并使用df.div
将其除以3
来找到平均值:
In [803]: df_4 = df_3.copy()
In [804]: df_4['c3'] = (df_3.c3 + df_2.c3 + df_1.c3).div(3)
In [805]: df_4
Out[805]:
c1 c2 c3
0 3 2 2.000000
1 1 2 3.000000
2 3 2 2.666667
答案 2 :(得分:0)
您可以采用3列,沿轴1进行df求平均值:
pd.DataFrame({'A': df1['c3'], 'B': df2['c3'],'C': df3['c3']}).mean(axis=1)