如果缺少连续值,则添加nan

时间:2018-10-23 09:58:50

标签: python pandas dataframe missing-data

我有一个类似的数据框

df2 = pandas.DataFrame(data=[[1,4],[2,2],[2,1],[5,2],[5,3]],columns=['A','B'])

df2
Out[117]: 
   A  B
0  1  4
1  2  2
2  2  1
3  5  2
4  5  3

,如果列A中缺少连续值,我想将nan添加到列B

数据框应变为

df2
Out[117]: 
   A  B
0  1  4
1  2  2
2  2  1
4  3  np.nan
5  4  np.nan
6  5  2
7  5  3

能请你帮我吗?

1 个答案:

答案 0 :(得分:1)

您可以构造一个数据框以附加,连接和排序:

df = pd.DataFrame(data=[[1,4],[2,2],[2,1],[5,2],[5,3]], columns=['A','B'])

# construct dataframe to append
arr = np.arange(df['A'].min(), df['A'].max() + 1)
arr = arr[~np.in1d(arr, df['A'].values)]
df_append = pd.DataFrame({'A': arr})

# concatenate and sort
res = pd.concat([df, df_append]).sort_values('A')

print(res)

   A    B
0  1  4.0
1  2  2.0
2  2  1.0
0  3  NaN
1  4  NaN
3  5  2.0
4  5  3.0