假设我有一个包含一列 A
的多索引数据框 df
。我想创建一个新列 B
,我将值 m
(例如 0)和 M
(例如 1)分配给最低和每组列 A
中的最高值,同时线性插值之间的所有值。
例如,考虑以下 df
。我想对每个 X
组进行插值
A
X Y
bar one -0.007381
two -1.219794
baz one 0.145578
two -0.249321
three -0.249321
four 0.21
foo one -1.046479
two 1.314373
qux one 0.716789
two 0.385795
我相信我可以在 Pandas 中结合使用 aggregate
和 transform
来做到这一点,但我不确定怎么做。
最佳答案
它认为如果使用 groupby
而不是 mutliIndex
可能会更好:
数据:
X Y A
bar one -0.007381
bar two -1.219794
baz one 0.145578
baz two -0.249321
baz three -0.249321
baz four 0.21
foo one -1.046479
foo two 1.314373
qux one 0.716789
qux two 0.385795
和:
In [47]:
df['new']=df.groupby(df.X).transform(lambda x: (x - x.min()) / x.ptp()).A
print df
X Y A new
0 bar one -0.007381 1.000000
1 bar two -1.219794 0.000000
2 baz one 0.145578 0.859745
3 baz two -0.249321 0.000000
4 baz three -0.249321 0.000000
5 baz four 0.210000 1.000000
6 foo one -1.046479 0.000000
7 foo two 1.314373 1.000000
8 qux one 0.716789 1.000000
9 qux two 0.385795 0.000000
[10 rows x 4 columns]
关于python - 组内线性插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634044/