我有两个数据框:
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列]
那么我怎样才能实现这一目标?
提前谢谢您。
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
您的数据框未对齐,您应该转换为 numpy:
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