#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 в решении полностью опциональны, вы также можете удалить их, если в этом нет необходимости