0.0] 的语法来选择/过滤行。例如: import pandas as pd import n-6ren">
gpt4 book ai didi

pandas - 使用 MultiIndex 列过滤行

转载 作者:行者123 更新时间:2023-12-04 05:22:13 27 4
gpt4 key购买 nike

当使用 MultiIndex 列创建 DataFrame 时,似乎无法使用类似 df[df["AA"]>0.0] 的语法来选择/过滤行。例如:

import pandas as pd
import numpy as np

dates = np.asarray(pd.date_range('1/1/2000', periods=8))
_metaInfo = pd.MultiIndex.from_tuples([('AA', '[m]'), ('BB', '[m]'), ('CC', '[s]'), ('DD', '[s]')], names=['parameter','unit'])

df = pd.DataFrame(randn(8, 4), index=dates, columns=_metaInfo)
print df[df['AA']>0.0]

df["AA"]>0.0 的结果是一个索引 DataFrame is a Timeseries。这可能会导致崩溃。

当使用相同的元信息作为行的索引时,情况就不同了:

df1 = pandas.DataFrame(np.random.randn(4, 6), index=_metaInfo)
print df1[df1["AA"]>0.0]

产生:

[ 1.13268106 -0.06887761  0.68535054  2.49431163 -0.29349413  0.34772553]

AA 行中大于零的元素。这仅给出 AA 行的值,而不给出 DataFrame 其他列的值。

有解决办法吗?我是否在尝试做不该做的事情?

最佳答案

您可以仅选择“AA”列并将其用作整个 df 的过滤器。

喜欢:

df[df[('AA','[m]')]>0.0]

parameter AA BB CC DD
unit [m] [m] [s] [s]
2000-01-01 0.600748 -1.163793 -0.982248 -0.397988
2000-01-03 1.045428 0.365353 0.049152 1.902942
2000-01-06 0.891202 0.021921 1.215515 -1.624741
2000-01-08 0.999217 -1.110213 0.257718 -0.096018

关于pandas - 使用 MultiIndex 列过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581517/

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