python - 组内线性插值

标签 python pandas

假设我有一个包含一列 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 中结合使用 aggregatetransform 来做到这一点,但我不确定怎么做。

最佳答案

它认为如果使用 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/

相关文章:

python - 如何优化循环和条件语句?

python - Pandas 的元素不在索引列表中

python - 在 Pandas 时间序列数据框中删除重复项

Python是强类型语言,创建DataFrame时dtype = float将应用于仅对float有意义的值?

python - 等待调试器连接的 Visual Studio Code Python 超时

python - 如何解析特定td标签之间的html文件

python - Pandas :应用生成列表的操作不可调用

python - BeautifulSoup 网络抓取 find_all() : excluded element appended as last element

python - Pandas 数据框排除特定范围内的行

python - 将多个函数应用于多个 groupby 列