假设我有一个包含一列df
的多索引数据框A
。我想创建一个新列B
,我将值m
(例如0)和M
(例如1)分配给每列{{{1}组中的最低值和最高值1}},同时线性插值所有值。
例如,请考虑以下A
。我想为每个df
组进行插值
X
我相信我可以在Pandas中使用 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
和aggregate
的组合来做到这一点,但我不确定如何。
答案 0 :(得分:2)
它认为使用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]