добавить nan, если пропущены последовательные значения - PullRequest
0 голосов
/ 23 октября 2018

У меня есть такой фрейм данных, как

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

, и я хотел бы добавить nan в столбец B, если в столбце A отсутствуют последовательные значения

, фрейм данных должен выглядеть как

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 голосов
/ 23 октября 2018

Вы можете создать кадр данных для добавления, объединения, а затем сортировки:

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
...