我有一个包含多个键值的字典。
d = {(0, 0, 'Shift 2 (2000 FT)'): 0.0, (0, 0, 'Shift 1 (0800 FT)'): 0.0, (0, 1, 'Shift 2 (2000 FT)'): 0.0, (0, 1, 'Shift 1 (0800 FT)'): 0.0, (0, 2, 'Shift 2 (2000 FT)'): 0.0, (0, 2, 'Shift 1 (0800 FT)'): 0.0}
我想将其转换为数据框,如下所示,其中第一个索引称为“WEEK”,第二个称为“DAY”,第三个索引为列。
请指教。谢谢!
答案 0 :(得分:5)
您可以读入字典,然后将索引转换为多索引并重塑。
import pandas as pd
df = pd.DataFrame.from_dict(d, orient='index')
df.index = pd.MultiIndex.from_tuples(df.index)
df = (df[0].unstack(-1)
.rename_axis(index=['Week', 'Day'])
.reset_index())
Week Day Shift 1 (0800 FT) Shift 2 (2000 FT)
0 0 0 0.0 0.0
1 0 1 0.0 0.0
2 0 2 0.0 0.0
您还可以使用普通构造函数一次性创建带有 MultiIndex 的初始 DataFrame。然后进行拆垛。
df = pd.DataFrame(data=d.values(), index=d.keys())
答案 1 :(得分:3)
另一种选择:创建列表的平面列表,然后使用 pivot_table
。
from itertools import chain
df = pd.DataFrame([list(chain(*[list(key),[val]])) for key,val in d.items()])
df = df.pivot_table(index=[0,1], columns=2).reset_index()
df.columns = ['Week','Day','Shift 1 (0800 FT)','Shift 2 (2000 FT)']