在多索引数据框中合并两个数据系列

LFSvenne

我有一个嵌套字典(三个级别),其中包含最低级别的元组。字典中的信息应该放在一个预定义的索引中,用于在别处导入的多索引 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章