Как использовать панд для создания сводной таблицы с пустыми ячейками

#python #pandas #dataframe

Вопрос:

У меня есть следующая таблица

      tax             rate Invoice No.
  GST/HST             NaN         NaN
      NaN             NaN         NaN
      NaN           5.00%         NaN
      NaN             NaN      100000
      NaN             NaN      100001
      NaN             NaN      100002
      NaN             NaN      100003
      NaN             NaN      100004
      NaN             NaN      100005
 

как использовать pivot для создания сводной таблицы, подобной этой:

 Invoice No.           tax         rate
    100000        GST/HST        5.00%
    100001        GST/HST        5.00%
    100002        GST/HST        5.00%
    100003        GST/HST        5.00%
    100004        GST/HST        5.00%
    100005        GST/HST        5.00%
 

Ответ №1:

вам нужно заполнить вперед( ffill() ) и dropna()

 out=df.ffill().dropna().iloc[:,[2,0,1]]
#df.ffill().dropna().loc[:,['Invoice No.','tax', 'rate']].reset_index(drop=True)
 

или

используйте прямое заполнение и заполнение обратного слова, а затем отбросьте дубликаты:

 out=df.ffill().bfill().drop_duplicates().iloc[:,[2,0,1]]
 

выход из out :

    Invoice No.  tax         rate
3   100000.0    GST/HST     5.00%
4   100001.0    GST/HST     5.00%
5   100002.0    GST/HST     5.00%
6   100003.0    GST/HST     5.00%
7   100004.0    GST/HST     5.00%
8   100005.0    GST/HST     5.00%
 

Примечание: Кроме того, iloc и loc в решении полностью опциональны, вы также можете удалить их, если в этом нет необходимости