【发布时间】:2014-03-30 07:49:22
【问题描述】:
我正在处理 pandas 中的多索引数据框,我想知道是否应该对行或列进行多索引。
我的数据如下所示:
代码:
import numpy as np
import pandas as pd
arrays = pd.tools.util.cartesian_product([['condition1', 'condition2'],
['patient1', 'patient2'],
['measure1', 'measure2', 'measure3']])
colidxs = pd.MultiIndex.from_arrays(arrays,
names=['condition', 'patient', 'measure'])
rowidxs = pd.Index([0,1,2,3], name='time')
data = pd.DataFrame(np.random.randn(len(rowidxs), len(colidxs)),
index=rowidxs, columns=colidxs)
在这里,我选择对列进行多索引,理由是 pandas 数据框由系列组成,而我的数据最终是一堆时间序列(因此在这里按时间进行行索引)。
我有这个问题是因为多索引的行和列之间似乎存在一些不对称性。例如,在this 文档网页中,它显示了query 如何用于行多索引数据帧,但如果数据帧是列多索引数据帧,则必须将文档中的命令替换为df.T.query('color == "red"').T。
我的问题可能看起来有点傻,但我想看看多索引行与数据帧的列之间是否存在便利性差异(例如上面的 query 案例)。
谢谢。
【问题讨论】:
-
这真的取决于你想如何操作、输出和.或查看你的数据。我怀疑行上的多索引更有用(虽然我真的不知道,但可能更有效)。如果您打算操作按列索引的数据范围,那么是的,多列更适合您。
-
这是一个很好的问题,因为某些字段的数据集通常是时间序列,但可能属于示例中所示的一系列类别。按列了解 MultiIndex 会很有帮助。
-
你得出什么结论了吗?我认为在 7 年多之后是的 :-) 分享您最终选择的方向以及原因(即取决于您的查询等)会很有帮助。
标签: python numpy pandas multi-index