两个 pandas 数据帧元素的平均值连接到元素结果...为什么?

问题描述 投票:0回答:2

我有两个数据框:

print(d1.head())

         Codes       Prof Amp
477      0.7         3.0  0.724997
478      0.7         3.0  0.736914
479      0.7         3.0  0.612189
480      0.7         3.0  0.684321
481      0.7         3.0  0.950067

print(d1.shape)

(96, 3)

print(d2.head())

       Codes       Prof Amp
0      0.8         5.0  0.747135
1      0.8         5.0  1.370311
2      0.8         5.0  0.759630
3      0.8         5.0  1.125687
4      0.8         5.0  1.910926

print(d2.shape)

(96, 3)

当我使用以下代码时:

dataM = d1.add(d2, fill_value=0)

        Code        Prof  Amp
0        0.8         5.0  0.747135
1        0.8         5.0  1.370311
2        0.8         5.0  0.759630
3        0.8         5.0  1.125687
4        0.8         5.0  1.910926

print(dataM.shape)

[192 rows x 3 columns]

但我的目标是

        Code        Prof  Amp
0        1.5         8.0  1.472132

…… 并且形状应该是相同的[96行x 3列]

那么我怎样才能实现这一目标?

提前谢谢您。

python pandas dataframe
2个回答
1
投票

两个 DataFrame 中需要相同的索引值,因此将

DataFrame.reset_index
drop=True
相加,并除以
2
进行平均:

dataM = d1.reset_index(drop=True).add(d2.reset_index(drop=True), fill_value=0).div(2)
print (dataM)
   Codes  Prof       Amp
0   0.75   4.0  0.736066
1   0.75   4.0  1.053613
2   0.75   4.0  0.685909
3   0.75   4.0  0.905004
4   0.75   4.0  1.430496

另一个想法是转换为 numpy 数组并除以

2
:

dataM = d1.add(d2.to_numpy(), fill_value=0).div(2)

Reasen 是通过索引值进行数据对齐:

dataM = d1.add(d2, fill_value=0).div(2)
print (dataM)
     Codes  Prof       Amp
0     0.40   2.5  0.373567
1     0.40   2.5  0.685156
2     0.40   2.5  0.379815
3     0.40   2.5  0.562844
4     0.40   2.5  0.955463
477   0.35   1.5  0.362499
478   0.35   1.5  0.368457
479   0.35   1.5  0.306094
480   0.35   1.5  0.342160
481   0.35   1.5  0.475033

0
投票

您的数据框未对齐,您应该转换为 :

d1.add(d2.to_numpy(), fill_value=0).div(2)

输出:

     Codes  Prof       Amp
477   0.75   4.0  0.736066
478   0.75   4.0  1.053613
479   0.75   4.0  0.685909
480   0.75   4.0  0.905004
481   0.75   4.0  1.430496
© www.soinside.com 2019 - 2024. All rights reserved.