在数据框中插入多列
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 )(它不应该在开始日期之前(文件中的第一个值)或结束日期之后(文件中的最后一个值)
例如:
- 文件 1 不应该进行插值,因为没有缺失
开始日期之后的值。
- 文件2应该有插值,因为开始日期和结束日期之间有空白值
等等……
预期输出
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
我有一个包含多列的数据框
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 )(它不应该在开始日期之前(文件中的第一个值)或结束日期之后(文件中的最后一个值)
例如:
- 文件 1 不应该进行插值,因为没有缺失 开始日期之后的值。
- 文件2应该有插值,因为开始日期和结束日期之间有空白值
等等……
预期输出
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