我正在使用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 dataframe由系列组成,而我的数据最终是一堆时间序列(因此在这里按时间行索引)。
我有这个问题,因为多列索引似乎在行和列之间存在一些不对称性。例如,在this文档网页中,它显示query
如何为行多索引数据框工作,但如果数据帧是列多重索引,那么文档中的命令必须替换为{{1} }}。
我的问题可能看起来有些愚蠢,但我想看看多索引行与数据帧列之间的便利性是否存在差异(例如上面的df.T.query('color == "red"').T
案例)。
感谢。
答案 0 :(得分:0)
我称之为DataFrame的一些常见操作的行/列倾向的粗略个人摘要:
[]
:column-first get
:仅限列query
:仅限行loc, iloc, ix
:row-first xs
:row-first sortlevel
:row-first groupby
:row-first "行第一"表示操作期望行索引作为第一个参数,并且要对列索引进行操作,需要使用[:, ]
或指定axis=1
;
"行只"表示该操作仅适用于行索引,并且必须执行诸如转置数据帧以对列索引进行操作之类的操作。
基于此,似乎多索引行更方便。
我的一个自然问题:为什么熊猫开发者不会统一DataFrame操作的行/列倾向?例如,[]
和loc/iloc/ix
是索引数据帧的两种最常见方式,但是一个切片列和其他切片行似乎有点奇怪。