- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 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/
在使用网站、加载内容等一段时间后,此消息显示“Fill:SelectCommand.Connection 属性尚未初始化”!我认为这是因为 sql 连接,但不确定......我想知道我能做些什么来防止
我是一名优秀的程序员,十分优秀!