Заполните пустые ячейки данными над ним - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть данные, которые выглядят так:

| ID       | Name      | Inv | Date       | Value | PO  | Type  | Rate  | Tax   | Integ |
|----------|-----------|-----|------------|-------|-----|-------|-------|-------|-------|
| DEADBEEF | CHEMICALS | 321 | 19-11-2017 | 14288 | UK  | State | 0.00% | 3000  | 0     |
|          |           |     |            | 0     | 0   | 0     | 5.00% | 10750 | 537.5 |

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

Приведенные выше данные в идеале должны выглядеть следующим образом:

| ID       | Name      | Inv | Date       | Value | PO  | Type  | Rate  | Tax   | Integ |
|----------|-----------|-----|------------|-------|-----|-------|-------|-------|-------|
| DEADBEEF | CHEMICALS | 321 | 19-11-2017 | 14288 | UK  | State | 0.00% | 3000  | 0     |
| DEADBEEF | CHEMICALS | 321 | 19-11-2017 | 14288 | UK  | State | 5.00% | 10750 | 537.5 |

Как видно, столбцы 1-7 заполнены данными, которые видны над ними.Как мне сделать это в pandas.

Мне нужно:

  • Укажите blanks или NULL s в "ID" (столбец 1)
  • Заполните эту строку: столбец 1 или 7 данными над этой строкой.

1 Ответ

0 голосов
/ 25 ноября 2018

Используйте mask с пропущенными значениями прямого заполнения:

df = df.mask(df == 0).ffill()

Или:

df = df.mask(df.isin(['', 0])).ffill()

Если хотите, также измените первую строку, заполненную пропущенными значениями, на0 только для числовых столбцов:

num = df.select_dtypes(np.number).columns
d = dict.fromkeys(num, 0)
print (d)
{'Inv': 0, 'Value': 0, 'Tax': 0, 'Integ': 0}

df = df.mask(df == 0).ffill().fillna(d)
print (df)
         ID       Name    Inv        Date    Value  PO   Type   Rate    Tax  \
0  DEADBEEF  CHEMICALS  321.0  19-11-2017  14288.0  UK  State  0.00%   3000   
1  DEADBEEF  CHEMICALS  321.0  19-11-2017  14288.0   0      0  5.00%  10750   

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