gpt4 book ai didi

python - MultiIndexing 行与 pandas DataFrame 中的列

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:51 25 4
gpt4 key购买 nike

我正在 pandas 中使用多索引数据框,我想知道我是否应该对行或列进行多索引。

我的数据看起来像这样: DataTable

代码:

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 案例)在便利性方面是否有任何区别。

谢谢。

最佳答案

我对DataFrame的一些常见操作的行/列倾向的粗略个人总结:

  • []:列优先
  • get:仅列
  • 作为索引访问的属性:仅列
  • 查询:仅行
  • loc, iloc, ix:行优先
  • xs:行优先
  • sortlevel:行优先
  • groupby:行优先

"row-first"表示操作期望行索引作为第一个参数,并且要对列索引进行操作需要使用 [:, ] 或指定 axis=1;
“仅行”意味着该操作仅适用于行索引,并且必须执行一些操作,例如转置数据帧以对列索引进行操作。

基于此,多索引行似乎稍微方便一些。

我的一个自然问题:为什么 pandas 开发人员不统一 DataFrame 操作的行/列倾向?例如,[]loc/iloc/ix 是两种最常用的数据帧索引方式,但一种切片列而另一种切片行似乎有点奇怪。

关于python - MultiIndexing 行与 pandas DataFrame 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059089/

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