gpt4 book ai didi

Python/Pandas : How creating an multi-index empty DataFrame, 然后开始填呢?

转载 作者:行者123 更新时间:2023-12-04 15:29:27 24 4
gpt4 key购买 nike

我想使用 pd.MultiIndex 将一组本地 DataFrame 的摘要存储到“元 DataFrame”中。

基本上,行轴有两层,列轴也有。在管理数据帧集的类中,我将这个“元数据帧”定义为类变量。

import pandas as pd

row_axis = pd.MultiIndex(levels=[[],[]], codes=[[],[]], names=['Data', 'Period'])
column_axis = pd.MultiIndex(levels=[[],[]], codes=[[],[]], names=['Data', 'Extrema'])
MD = pd.DataFrame(index=row_axis, columns=column_axis)

这似乎有效。

MD.index
>>> MultiIndex([], names=['Data', 'Period'])

MD.columns
>>> MultiIndex([], names=['Data', 'Extrema'])

现在,每次我处理一个单独的 DataFrame id 时,我都想相应地更新这个“Meta DataFrame”。 id 有一个周期为“5m”的 DateTimeIndex。

id.index[0]
>>> Timestamp('2020-01-01 08:00:00')

id.index[-1]
>>> Timestamp('2020-01-02 08:00:00')

例如,我想在 MD 中保留其第一个和最后一个索引值。

MD.loc[[('id', '5m')],[('Timestamp', 'First')]] = id.index[0]
MD.loc[[('id', '5m')],[('Timestamp', 'Last')]] = id.index[-1]

这不起作用,我收到以下错误消息:

TypeError: unhashable type: 'list'

最后,我想要的结果是在 MD 中有以下类型的信息(我有其他 id 具有不同周期的数据帧):

           Timestamp
First Last
id 5m 2020-01-01 08:00:00 2020-01-02 08:00:00
10m 2020-01-05 08:00:00 2020-01-06 18:00:00

最终,我还将在 id 中保留一些列的最小值和最大值。例如,如果 id 有一列“温度”。

           Timestamp                                     Temperature
First Last Min Max
id 5m 2020-01-01 08:00:00 2020-01-02 08:00:00 -2.5 10
10m 2020-01-05 08:00:00 2020-01-06 18:00:00 4 15

这些值会在我记录id的时候记录下来。

我知道为每个单元格初始化一个 DataFrame 单元格的时间效率不高,但不会经常这样做。

此外,我看不出如何在 Dict 中管理这种信息组织,这就是为什么我正在考虑使用多级 DataFrame 来做到这一点。然后我会将其转储到一个 csv 文件中以存储这些“元数据”。

请问,在 MD 中初始化每个值的正确方法是什么?

谢谢你的帮助!最好的,

最佳答案

您可以将数据存储在一个字典中,而不是填充一个空的 DataFrame。 MultiIndex 使用 元组 作为索引值,因此我们将每个字典的键设为元组。

外部字典使用列 MultiIndex 元组作为键,值是另一个字典,其中行 MultiIndex 元组作为键,单元格中的值作为值。

d = {('Score', 'Min'):       {('id1', '5m'): 72, ('id1', '10m'): -18},
('Timestamp', 'First'): {('id1', '5m'): 1, ('id1', '10m'): 2},
('Timestamp', 'Last'): {('id1', '5m'): 10, ('id1', '10m'): 20}}
# | | |
# Column MultiIndex Row Multi Cell Value
# Label Label

pd.DataFrame(d)

        Score Timestamp     
Min First Last
id1 5m 72 1 10
10m -18 2 20

创建 dict 将取决于您获取值的方式。你可以extend a dict with update

关于Python/Pandas : How creating an multi-index empty DataFrame, 然后开始填呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61525516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com