Преобразование временных рядов с переменным временем начала в начальные смещения в Pandas - PullRequest
0 голосов
/ 01 июня 2018

У меня есть Pandas DataFrame значений для каждого месяца;каждый столбец представляет собой отдельную временную серию, но они начинаются в разные месяцы.Значения NaN перед началом каждой серии.

df = pd.DataFrame({
    'a': [np.nan, np.nan, 1, 2, 3, 4], 
    'b': [2, 4, 6, 8, 10, 12], 
    'c': [np.nan, -1, -2, -3, np.nan, -5]}, 
    index=pd.date_range('2018-01', '2018-06', freq='MS')
)

              a   b    c
2018-01-01  NaN   2  NaN
2018-02-01  NaN   4 -1.0
2018-03-01  1.0   6 -2.0
2018-04-01  2.0   8 -3.0
2018-05-01  3.0  10  NaN
2018-06-01  4.0  12 -5.0

Я хотел бы преобразовать этот фрейм данных так, чтобы для каждого столбца первое ненулевое значение находилось в первой строке, а NaN s в конце.

Вот моя лучшая попытка:

df.reset_index(drop=True).apply(lambda c: c.shift(-c.first_valid_index()))

     a   b    c
0  1.0   2 -1.0
1  2.0   4 -2.0
2  3.0   6 -3.0
3  4.0   8  NaN
4  NaN  10 -5.0
5  NaN  12  NaN

Есть ли встроенный или более естественный способ сделать это в Пандах?У этой операции есть имя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...