我想使用pd.MultiIndex.
基本上,行轴有两个级别,列轴也有。在管理数据帧集的类中,我将这个“元数据帧”定义为类变量。
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'])
现在,每次我处理一个单独的 DataFrameid时,我都想相应地更新这个“元数据帧”。id有一个日期时间索引,周期为“5m”。
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不同时期的 DataFrame):
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中初始化这些值的正确方法是什么?
红颜莎娜
相关分类