熊猫-根据列值添加缺少的行以具有linspace

时间:2019-02-27 12:49:11

标签: python pandas interpolation autofill linear-interpolation

我有一个像这样的熊猫数据框

     a   b  c
0  0.5  10  7
1  1.0   6  6
2  2.0   1  7
3  2.5   6 -5
4  3.5   9  7

,我想根据某个步骤填充有关列“ a”的缺失列。在这种情况下,给定步骤0.5,我想用缺失值(即1.5和3.0)填充'a'列,并将其他列设置为null,以获得以下结果。

     a     b    c
0  0.5  10.0  7.0
1  1.0   6.0  6.0
2  1.5   NaN  NaN
3  2.0   1.0  7.0
4  2.5   6.0 -5.0
5  3.0   NaN  NaN
6  3.5   9.0  7.0

用哪种熊猫或其他类似numpy或scipy的库来做到这一点最干净?

谢谢!

2 个答案:

答案 0 :(得分:4)

一种简单的实现方法是先创建所需的索引,然后合并其上的其余信息:

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [0.5, 1, 2, 2.5, 3.5],
                   'b': [10, 6, 1, 6, 9],
                   'c': [7, 6, 7, -5, 7]})
ls = np.arange(df.a.min(), df.a.max(), 0.5)
new_df = pd.DataFrame({'a':ls})
new_df = new_df.merge(df, on='a', how='left')

答案 1 :(得分:3)

numpy.arange创建数组,然后用set_index创建index,最后用reindex创建reset_index

step= .5
idx = np.arange(df['a'].min(), df['a'].max() + step, step)
df = df.set_index('a').reindex(idx).reset_index()
print (df)
     a     b    c
0  0.5  10.0  7.0
1  1.0   6.0  6.0
2  1.5   NaN  NaN
3  2.0   1.0  7.0
4  2.5   6.0 -5.0
5  3.0   NaN  NaN
6  3.5   9.0  7.0