我有下面这本词典:

data ={
    'Allehelgens gate 4': {
        'Direkte el1': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                537,
                967
            ]
        },
        'Direkte el2': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                100,
                89
            ]
        },
        'Direkte el3': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                203,
                191
            ]
        },
        'Direkte el4': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Direkte el5': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                8993,
                10113
            ]
        },
        'Fjernvarme6': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                10280,
                13630
            ]
        },
        'Direkte el7': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                1345,
                1380
            ]
        },
        'Tappevann8': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                9,
                15
            ]
        },
        'Tappevann9': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                8,
                15
            ]
        }
    },
    'Christian Krohgs gate 32': {
        'Fjernvarme1': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                9147,
                12761
            ]
        },
        'Fjernvarme2': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                8869,
                12732
            ]
        },
        'Fjernvarme3': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                50,
                1724
            ]
        },
        'Nærkjøling4': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Nærkjøling5': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Fjernvarme6': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Nærkjøling7': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Fjernvarme8': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Nærkjøling9': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Fjernvarme10': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                2,
                1
            ]
        },
        'Nærkjøling11': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Fjernvarme12': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                1
            ]
        },
        'Nærkjøling13': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Direkte el14': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                8626,
                16143
            ]
        },
        'Direkte el15': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                18211,
                18211
            ]
        },
        'Fjernvarme16': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                20600,
                35310
            ]
        },
        'Direkte el17': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                95,
                138
            ]
        },
        'Direkte el18': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                358,
                357
            ]
        },
        'Direkte el19': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                130,
                130
            ]
        },
        'Direkte el20': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                331,
                472
            ]
        },
        'Direkte el21': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                309,
                355
            ]
        },
        'Direkte el22': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                382,
                698
            ]
        },
        'Direkte el23': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                373,
                440
            ]
        },
        'Direkte el24': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                173,
                183
            ]
        },
        'Direkte el25': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                706,
                1015
            ]
        },
        'Direkte el26': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                80,
                141
            ]
        },
        'Direkte el27': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                175,
                210
            ]
        },
        'Direkte el28': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                406,
                702
            ]
        },
        'Direkte el29': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                251,
                364
            ]
        },
        'Direkte el30': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                517,
                510
            ]
        },
        'Direkte el31': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                146,
                299
            ]
        },
        'Direkte el32': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                659,
                857
            ]
        },
        'Direkte el33': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                55,
                90
            ]
        },
        'Direkte el34': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                192,
                224
            ]
        },
        'Direkte el35': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                976,
                1009
            ]
        },
        'Tappevann36': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Tappevann37': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                0,
                0
            ]
        },
        'Direkte el38': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                654,
                2436
            ]
        },
        'Direkte el39': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                27,
                212
            ]
        },
        'Direkte el40': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                75,
                
393
            ]
        },
        'Direkte el41': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                82,
                323
            ]
        },
        'Direkte el42': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                8,
                584
            ]
        },
        'Direkte el43': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                9,
                842
            ]
        },
        'Direkte el44': {
            'Datetime': [
                '2020-12-28T00:00:00.000Z',
                '2021-01-04T00:00:00.000Z'
            ],
            'Value': [
                695,
                905
            ]
        }
    }
} 

我想把这本词典变成一个Pandas 数据框.我认为最好的方法是得到这样的东西:

enter image description here

try 了几种方法都没有成功,有人知道如何解决这个问题吗?

似乎特兰比的回答几乎奏效了:

建议的解决方案:

series = pd.DataFrame(data).unstack()
cols = series.index
s = series.apply(lambda x: dict(zip(x["Datetime"], x["Value"])))
pd.DataFrame(s.values.tolist(), index=cols).T

但在 run 的时候

series = pd.DataFrame(data).unstack()" 

Pandas .这部剧有很多NaN.这会在运行时导致错误

s = series.apply(lambda x: dict(zip(x["Datetime"], x["Value"])))

你有任何关于如何解决这个问题的线索吗?

推荐答案

嵌套词典的 struct 有点复杂.您可以首先使用UnStack获取多索引列,然后转换单元格值以创建新的DataFrame:

series = pd.DataFrame(data).unstack().dropna()
s = series.apply(lambda x: dict(zip(x["Datetime"], x["Value"])))
pd.DataFrame(s.values.tolist(), index=series.index).T

编辑:编辑后添加dropna

输出:

                   Building 1                           Building 2                  
           Energy consumption Water consumption Energy consumption Water consumption
2020-12-28                537               537                600               800
2021-01-04                967               967                700               500

Python相关问答推荐

如何将Docker内部运行的mariadb与主机上Docker外部运行的Python脚本连接起来

Python键入协议默认值

使用setuptools pyproject.toml和自定义目录树构建PyPi包

try 将一行连接到Tensorflow中的矩阵

在极性中创建条件累积和

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

寻找Regex模式返回与我当前函数类似的结果

重置PD帧中的值

GPT python SDK引入了大量开销/错误超时

如何反转一个框架中列的值?

利用SCIPY沿第一轴对数组进行内插

Polars定制函数返回多列

Matplotlib中的曲线箭头样式

按列表分组到新列中

如何在基于时间的数据帧中添加计算值

如何通过特定导入在类中执行Python代码

PANDA:如何将多选列转换为索引/列

为什么Python多处理.Process()传递队列参数并且读取比函数传递队列参数和读取更快?

如果init被重载,如何输入提示一个基于init的函数的返回类型