gpt4 book ai didi

python - 从使用 python pandas 制作的数据透视表中进行过滤和选择

转载 作者:太空狗 更新时间:2023-10-29 21:32:16 24 4
gpt4 key购买 nike

我正在努力处理 Python pandas 包中的层次索引。具体来说,我不明白如何在数据透视后过滤比较行中的数据。

这是文档中的示例表:

import pandas as pd
import numpy as np

In [1027]: df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 6,
'B' : ['A', 'B', 'C'] * 8,
'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 4,
'D' : np.random.randn(24),
'E' : np.random.randn(24)})

In [1029]: pd.pivot_table(df, values='D', rows=['A', 'B'], cols=['C'])
Out[1029]:
C bar foo
A B
one A -1.154627 -0.243234
B -1.320253 -0.633158
C 1.188862 0.377300
three A -1.327977 NaN
B NaN -0.079051
C -0.832506 NaN
two A NaN -0.128534
B 0.835120 NaN
C NaN 0.838040

我想分析如下:

1) 根据列属性过滤此表,例如选择具有负 foo 的行:

    C             bar       foo
A B
one A -1.154627 -0.243234
B -1.320253 -0.633158
three B NaN -0.079051
two A NaN -0.128534

2) 比较不同 A 系列组之间剩余的 B 系列值?我不确定如何访问此信息:{'one':['A','B'], 'two':['A'], 'three':['B']} 并确定哪些系列 B 值对于每个键是唯一的,或者在多个键组中出现等

有没有办法直接在数据透视表结构中执行此操作,或者我是否需要将其转换回 pandas dataframe

更新:我认为这段代码是朝着正确方向迈出的一步。它至少让我可以访问此表中的各个值,但我仍在对系列值进行硬编码:

table = pivot_table(df, values='D', rows=['A', 'B'], cols=['C'])
table.ix['one', 'A']

最佳答案

数据透视表返回一个 DataFrame,因此您可以通过以下操作简单地进行过滤:

In [15]: pivoted = pivot_table(df, values='D', rows=['A', 'B'], cols=['C'])

In [16]: pivoted[pivoted.foo < 0]
Out[16]:
C bar foo
A B
one A -0.412628 -1.062175
three B NaN -0.562207
two A NaN -0.007245

你可以使用类似的东西

pivoted.ix['one']

选择所有A系列组

pivoted.ix['one', 'A']

选择不同的 A 和 B 系列组

关于python - 从使用 python pandas 制作的数据透视表中进行过滤和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11973741/

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