Я прочитал Панд: как запустить сводную таблицу с мультииндексом? , но это не могло решить мою проблему.
Учитывая приведенный ниже кадр данных:
import pandas as pd
df = pd.DataFrame({
"date": ["20180920"] * 6,
"id": ["A123456789"] * 6,
"test": ["a", "b", "c", "d", "e", "f"],
"result": [70, 90, 110, "(-)", "(+)", 0.3],
"ref": ["< 90", "70 - 100", "100 - 120", "(-)", "(-)", "< 1"]
})
Я хотел бы расширить столбец test
, использовать значения в result
и игнорировать ref
. Другими словами, желаемый вывод выглядит так:
date id a b c d e f
0 20180920 A123456789 70 90 110 (-) (+) 0.3
Итак, я попытался df.pivot(index=["date", "id"], columns="test", values="result")
, но это не удалось с ValueError: Длина переданных значений равна 6, индекс подразумевает 2 . Я думаю, что это связано с «Если массив передан, он должен быть той же длины, что и данные». в pivot_table
документации , но я просто не понимаю, что это значит. Может кто-нибудь уточнить, пожалуйста?
Кстати, я наконец-то получил желаемый результат на df.drop(columns="ref").set_index(["date", "id", "test"]).unstack(level=2)
. Это единственный правильный путь?