我有一个嵌套字典(三个级别),其中包含最低级别的元组。字典中的信息应该放在一个预定义的索引中,用于在别处导入的多索引 DataFrame(两级)。
元组将被拆分到数据帧的第三层。
import pandas as pd
# This is the dataframe template:
index_struct = [('A', 'buffer', 'mean'), ('A', 'buffer', 'var'), ('A', 'cycle', 'mean'), ('A', 'cycle', 'var')
, ('B', 'buffer', 'mean'), ('B', 'buffer', 'var'), ('B', 'cycle', 'mean'), ('B', 'cycle', 'var')]
index = pd.MultiIndex.from_tuples(index_struct)
# This is the nested dictionary that is passed:
data_dict = {'A': {'buffer': (5, 7)}, 'B': {'buffer': (6, 2), 'cycle': (8, 3)}}
简单from_dict
的数据产生:
print(pd.DataFrame.from_dict(data))
[OUT]:
A B
buffer (5, 7) (6, 2)
cycle NaN (8, 3)
print(pd.DataFrame.from_dict(data, orient='index')
计算相同。
而我希望它看起来像这样:
A B
buffer cycle buffer cycle
mean var mean var mean var mean var
0 5.0 7.0 NaN NaN 6.0 2.0 8.0 3.0
据推测,该解决方案应包含两个步骤:将 mean-var 信息添加到数据中,然后将其实现到 DataFrame 模板中。
我对 pandas 包提供的可能选项有点迷茫。提前谢谢了。
我们可以在读取 DataFrame 后重新创建它以拆分元组。然后是.reindex
在确保正确订购(使用swaplevel
)之后。
import pandas as pd
s = pd.DataFrame.from_dict(data_dict).stack()
df = (pd.DataFrame(s.tolist(), columns=['mean', 'var'], index=s.index).stack()
.swaplevel(0, 1)
.reindex(index)
.to_frame()
.T)
A B
buffer cycle buffer cycle
mean var mean var mean var mean var
0 5.0 7.0 NaN NaN 6.0 2.0 8.0 3.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句