我想以一种更充分的方式实现下面这样的目标.我想是的.pivot也许能做到,但我做不到.有什么建议吗?
import pandas as pd
df = pd.DataFrame({'level1':['a', 'a'], 'level2':['b', 'b'], 'level3':[100, 101], 'id1':[111,222],'id2':[333,444], 'foo_value':[0.1,0.2], 'bar_value':[0.3,0.4]})
# now i want to re-shape it to below
rows = []
items = [col.replace("_value", "") for col in df.columns if col.endswith("_value")]
for _, row in df.iterrows():
for id_col in ("id1", "id2"):
for item in items:
rows.append({
"id": row[id_col],
"item": item,
"value": row[f"{item}_value"],
"level1": row["level1"],
"level2": row["level2"],
"level3": row["level3"]
})
reshaped_df = pd.DataFrame(rows)