熊猫中列的元素明智操作

时间:2020-11-06 13:54:54

标签: python pandas dataframe

我想对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)

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)