Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数据帧中插入多个列_Python_Pandas_Dataframe_Interpolation_Linear Interpolation - Fatal编程技术网

Python 在数据帧中插入多个列

Python 在数据帧中插入多个列,python,pandas,dataframe,interpolation,linear-interpolation,Python,Pandas,Dataframe,Interpolation,Linear Interpolation,我有一个包含多列的数据框 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': [4

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

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\u are='inside'一起使用

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
与参数
limit\u are='inside'一起使用

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

乍一看,这似乎是可行的,但当我现在检查只是为了确认它似乎是插值工作的开始阶段(它开始插值在正确的时间)但是对于结束,它超出了结束日期。例如,文件4和5应该在1933@Tamarie-能否为验证所有列添加预期输出数据框?在question@Tamarie-谢谢,似乎
(limit_'are='inside'
将值添加到末尾,因此将替换值添加到last
NaN
s这乍一看似乎有效,但当我现在检查以确认插值似乎在开始阶段有效(它在正确的时间开始插值)但是对于结束,它超出了结束日期。例如,文件4和5应该在1933@Tamarie-能否为验证所有列添加预期输出数据框?在question@Tamarie-谢谢,似乎
(limit_'s='inside'
将值添加到末尾,因此将值替换为last
NaN
s中缺少的值