Как применить филлну симметрично на pd.dataframe? - PullRequest
0 голосов
/ 15 октября 2019

Я автоматически извлекаю табличные данные из PDF-файлов с помощью Camelot. Очень часто обнаружение краев приводит к автоматическому выравниванию текста в средней ячейке.

Поэтому мне нужно обрабатывать извлеченный pandas-dataframe дальше. Я хочу распространить текст, который выровнен по центру, по другим ячейкам, строго говоря, копируя его симметрично.

Так что, если обе соседние ячейки имеют "значение", np.nan обе получат скопированное значение, еслис обеих сторон две ячейки имеют np.nan, все четыре из них получают значение средней ячейки и т. д.

Это пример текущего кадра данных.

Column_1     Column_2    Column_3  Column_4 

5            np.nan           6          np.nan
np.nan       some Text        np.nan       12
7           some other Text     8          np.nan

Ожидаемый результат должен быть следующим:

 Column_1    Column_2    Column_3  Column_4 

     5        np.nan         6       12
some Text   some Text    some Text   12
     7     some other Text   8       12

1 Ответ

0 голосов
/ 15 октября 2019

Чтобы заполнить текст напрямую, чтобы заменить np.nan, вы можете использовать эту опцию:

df['column_name'] = np.where(df['column_name'].isnull(), 'text', df['column_name'])

Чтобы заполнить значения, основанные на предыдущей строке определенного столбца или следующей строке:

df.fillna( method ='bfill/ffill', inplace = True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...