在数据框中插入多列

Interporlating multiple columns in a dataframe

我有一个包含多列的数据框

df = pd.DataFrame({
'Date': [1930, 1931, 1932, 1933,1934],
'File1': [np.nan, 72, 58, 280, 958],
'File2': [22, np.nan, np.nan, np.nan, 13],
'File3': [np.nan, np.nan, np.nan, 18, 137],
'File4': [np.nan, 552, 1377, 280, np.nan],
'File5': [45, 1252, np.nan, 1841, np.nan],
}) 

我想对整个数据帧执行插值(例如使用 FillMean)。但是,这些文件具有不同的开始日期和结束日期。所以我需要说在该文件的第一个值和最后一个值之间插值(使用 FillMean )(它不应该在开始日期之前(文件中的第一个值)或结束日期之后(文件中的最后一个值)

例如:

预期输出

   Date  File1  File2  File3   File4   File5
0  1930    NaN  22.00    NaN   280.0    45.0
1  1931   72.0  19.75    NaN   552.0  1252.0
2  1932   58.0  17.50    NaN  1377.0  1546.5
3  1933  280.0  15.25   18.0   280.0  1841.0
4  1934  958.0  13.00  137.0     NaN     NaN

使用带有参数 limit_are='inside'DataFrame.interpolate:

df = df.interpolate(limit_are='inside').mask(df.bfill().isna())
print (df)
   Date  File1  File2  File3   File4   File5
0  1930    NaN  22.00    NaN     NaN    45.0
1  1931   72.0  19.75    NaN   552.0  1252.0
2  1932   58.0  17.50    NaN  1377.0  1546.5
3  1933  280.0  15.25   18.0   280.0  1841.0
4  1934  958.0  13.00  137.0     NaN     NaN