我有一个看起来像这样的数据框:
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
使用上面的代码,我在第一行中得到了一个NaN。但是,我希望插值法也将其他列考虑在内,即我希望看到NaN而不是4。
有什么想法如何处理多行文本/日期而不只是两行这样的情况?
答案 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