使用数字和字符串列跨多个列进行插值

时间:2019-06-13 02:31:01

标签: python pandas

我有一个看起来像这样的数据框:

import pandas as pd
import numpy as np

d={'business':['FX','FX','FX','IR','IR','IR'],\
'A/L':['A','A','A','A','A','A'],\
'date':(['01/01/2018','02/01/2018','03/01/2018','04/01/2018',\
'05/01/2018','06/01/2018']),\
'amt':[np.nan,2,3,np.nan,5,6]}
df=pd.DataFrame(data=d)
df['date'] = pd.to_datetime(df['date'],format='%d/%m/%Y')
df=df.interpolate()
df

使用上面的代码,我在第一行中得到了一个N​​aN。但是,我希望插值法也将其他列考虑在内,即我希望看到NaN而不是4。 enter image description here

有什么想法如何处理多行文本/日期而不只是两行这样的情况?

1 个答案:

答案 0 :(得分:1)

您可能需要groupby

df.groupby('business').apply(pd.Series.interpolate)
Out[55]: 
  A/L  amt business       date
0   A  NaN       FX 2018-01-01
1   A  2.0       FX 2018-01-02
2   A  3.0       FX 2018-01-03
3   A  NaN       IR 2018-01-04
4   A  5.0       IR 2018-01-05
5   A  6.0       IR 2018-01-06