组内的线性插值

时间:2014-05-13 14:26:35

标签: python pandas

假设我有一个包含一列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的组合来做到这一点,但我不确定如何。

1 个答案:

答案 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]