Pandas Pivot table cumsum () как переносить значение в следующий столбец без np.NaN [duplicate]

Свойство может быть объявлено двумя способами.

  • Создание методов getter, setter для атрибута, а затем передача их как аргумент функции свойства
  • Использование @ Свойство decorator.

Вы можете взглянуть на несколько примеров, которые я написал о свойствах в python .

1
задан wfh 3 June 2014 в 13:46
поделиться

1 ответ

Использование функции fillna:

df.fillna(axis=1, method='backfill')

будет выполняться, если в других столбцах нет NaN. Если есть и вы хотите оставить их нетронутыми, я думаю, что единственным вариантом в этом случае является выполнение fillna в подмножестве вашего фрейма данных. С примером dataframe:

In [45]: df
Out[45]: 
     A    B    C    D   E   F
0  158  158  158  177   1  10
1  158  158  158  177   2  20
2  NaN  NaN  NaN  177   3  30
3  158  158  158  177 NaN  40
4  NaN  NaN  NaN  177   5  50

In [48]: df[['A', 'B', 'C', 'D']] = df[['A', 'B', 'C', 'D']].fillna(axis=1, method='backfill')

In [49]: df
Out[49]: 
     A    B    C    D   E   F
0  158  158  158  177   1  10
1  158  158  158  177   2  20
2  177  177  177  177   3  30
3  158  158  158  177 NaN  40
4  177  177  177  177   5  50

Udate: Если вы не хотите зависеть от порядка столбцов, вы также можете указать значения для использования для каждой строки (например, .fillna(value=df['D'] ). Единственная проблема заключается в том, что это работает только для Series (когда это фреймворк данных, он пытается сопоставить различные значения для заполнения в разных столбцах, а не в строках). Поэтому, применив его для столбца по столбцу, он работает:

In [60]: df[['A', 'B', 'C']].apply(lambda x: x.fillna(value=df['D']))
Out[60]: 
     A    B    C
0  158  158  158
1  158  158  158
2  177  177  177
3  158  158  158
4  177  177  177
3
ответ дан joris 22 August 2018 в 07:53
поделиться
  • 1
    Спасибо, это имеет смысл. Но есть ли способ сделать это, явно определяя столбец, из которого следует использовать другие NaN-столбцы? Например. если бы столбец «E» и «F» также имели NaN, и я также хотел бы, чтобы они были заполнены по ряду значений со столбца «D»? В некотором смысле это сделало бы логику заполнения независимой от столбца. – wfh 3 June 2014 в 13:52
  • 2
    Да, это тоже возможно. Я обновил ответ. – joris 3 June 2014 в 13:59
  • 3
    Столбец D не всегда постоянный, как в вашем примере? Потому что в этом случае вы могли бы сделать это намного проще. – joris 3 June 2014 в 14:00
  • 4
    Правильно, это не постоянно - я должен был выбрать лучший / менее тривиальный пример. Спасибо за вашу помощь! – wfh 3 June 2014 в 14:27
Другие вопросы по тегам:

Похожие вопросы: