在原始数据帧中没有显式“ NaN”行的数据帧的插值

时间:2019-03-08 03:03:08

标签: python-3.x pandas dataframe

我想知道如何在“ Data”列中的行之间进行插值,并在其中循环并创建带有“ 0.3”,“ 0.5”和“ 0.6”的新行以填补空白?

df = pd.DataFrame([0.1,0.2,0.4,0.7],columns=['Data'])
df

enter image description here

我该如何使用对原始数据帧的代码来生成下面的图像?

非常感谢。

1 个答案:

答案 0 :(得分:2)

我认为应该有2种解决方案,并在示例数据中添加更多列:

df = pd.DataFrame({'Data': [0.1,0.2,0.4,0.7],
                   'A':list('abcd'),
                   'B':[4,5,6,9]})
print (df)
   Data  A  B
0   0.1  a  4
1   0.2  b  5
2   0.4  c  6
3   0.7  d  9

通过Data列创建索引并使用DataFrame.reindex

arr = np.arange(df.Data.min(),df.Data.max() + 0.1,0.1)

df1 = df.set_index('Data').reindex(arr).reset_index()
print (df1)
   Data    A    B
0   0.1    a  4.0
1   0.2    b  5.0
2   0.3  NaN  NaN
3   0.4    c  6.0
4   0.5  NaN  NaN
5   0.6  NaN  NaN
6   0.7  NaN  NaN

或使用左联接创建助手DataFrameDataFrame.merge

df1 = pd.DataFrame({'Data':arr}).merge(df, how='left')
print (df1)
   Data    A    B
0   0.1    a  4.0
1   0.2    b  5.0
2   0.3  NaN  NaN
3   0.4    c  6.0
4   0.5  NaN  NaN
5   0.6  NaN  NaN
6   0.7  NaN  NaN