gpt4 book ai didi

python - 如何根据二级标准从多索引 pandas.Series 对象中提取?

转载 作者:行者123 更新时间:2023-11-28 21:51:16 25 4
gpt4 key购买 nike

我在下面有一个 pandas DataFrame 示例对象,我在其上执行分组相关性计算。最后我想查看 Value1Value2

之间的时间序列相关性
data = [
(1, 'alpha', 3, 101, 2),
(1, 'beta', 2, 102, 3),
(1, 'gamma', 5, 103, 4),
(2, 'alpha', 2.5, 101, 1),
(2, 'beta', 2.2, 105, 2),
(2, 'gamma', 5, 100, 0),
(3, 'alpha', 2.1, 102, 0),
(3, 'beta', 2.0, 102, 3.3),
(3, 'gamma', 5, 100, 2),
]

datapd = pandas.DataFrame(data, columns=('Time', 'ID', 'Value1', 'Value2', 'Value3'))
corrvals = datapd.groupby('Time').corr()

因此,当我查看 corrvals['Value1'] 时,我只想选择所有 Value2 项目。然而,它们在 Time 之后处于同一水平。例如。 corrvals['Value1'].index.values 显示:

array([(1, 'Value1'), (1, 'Value2'), (1, 'Value3'), (2, 'Value1'),
(2, 'Value2'), (2, 'Value3'), (3, 'Value1'), (3, 'Value2'),
(3, 'Value3')], dtype=object)

我如何在第二个元组中请求所有具有索引 Value2 的值,而对第一个元组没有要求?

最佳答案

我想指出这个警告 here因为你有不同的结果:

In [13]: idx = pd.IndexSlice

这会在 COLUMNS 上进行选择。因为这与 corrvals.loc[:,'Value2'] 完全相同,例如典型的列选择

In [15]: corrvals.loc[idx[:,'Value2']]
Out[15]:
Time
1 Value1 0.654654
Value2 1.000000
Value3 1.000000
2 Value1 -0.725288
Value2 1.000000
Value3 0.944911
3 Value1 -0.999569
Value2 1.000000
Value3 -0.121560
Name: Value2, dtype: float64

这会选择 INDEX。 (注意尾随的逗号)。

In [16]: corrvals.loc[idx[:,'Value2'],]
Out[16]:
Value1 Value2 Value3
Time
1 Value2 0.654654 1 1.000000
2 Value2 -0.725288 1 0.944911
3 Value2 -0.999569 1 -0.121560

最后,这是使用 .query 进行此选择的另一种方法。 ilevel_1 是第 1 级的名字(从 0 开始编号),因为它没有名称。

In [18]: corrvals.index.names
Out[18]: FrozenList([u'Time', None])

In [17]: corrvals.query('ilevel_1=="Value2"')
Out[17]:
Value1 Value2 Value3
Time
1 Value2 0.654654 1 1.000000
2 Value2 -0.725288 1 0.944911
3 Value2 -0.999569 1 -0.121560

您可以重命名级别。

In [19]: corrvals.index = corrvals.index.set_names(['Time','Values'])

那么查询就简单了。

In [20]: corrvals.query('Values=="Value2"')
Out[20]:
Value1 Value2 Value3
Time Values
1 Value2 0.654654 1 1.000000
2 Value2 -0.725288 1 0.944911
3 Value2 -0.999569 1 -0.121560

关于python - 如何根据二级标准从多索引 pandas.Series 对象中提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603024/

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