pandas - добавить недостающие строки на основе значений столбцов, чтобы получить пробел - PullRequest
0 голосов
/ 27 февраля 2019

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

     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, я хотел бы заполнить столбец «a» пропущенными значениями, то есть 1,5 и 3,0, и установить для других столбцов значение 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 голосов
/ 27 февраля 2019

Один простой способ добиться этого - сначала создать нужный индекс, а затем объединить оставшуюся информацию о нем:

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')
0 голосов
/ 27 февраля 2019

Создать массив по numpy.arange, затем создать index по set_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
...