gpt4 book ai didi

python - Pandas 类别比较

转载 作者:行者123 更新时间:2023-11-28 22:19:46 25 4
gpt4 key购买 nike

我在这里创建了一个示例数据框。

df = pd.DataFrame( np.random.randn(10,2), columns=list('AB'))    

A B
0 0.459759 0.152645

1 0.183613 0.756527

2 -1.836027 0.032433

3 0.264336 0.170171

4 -0.276347 0.208389

5 0.677709 0.725274

6 -0.547858 0.376683

7 -0.994759 -0.750373

8 0.556593 1.282167

9 -1.444533 0.589768

df['A_rank']= pd.qcut(df['A'],[0,0.25,0.5,0.75,1],duplicates="drop")

A B A_rank
0 0.459759 0.152645 (0.411, 0.678]

1 0.183613 0.756527 (-0.0464, 0.411]

2 -1.836027 0.032433 (-1.837, -0.883]

3 0.264336 0.170171 (-0.0464, 0.411]

4 -0.276347 0.208389 (-0.883, -0.0464]

5 0.677709 0.725274 (0.411, 0.678]

6 -0.547858 0.376683 (-0.883, -0.0464]

7 -0.994759 -0.750373 (-1.837, -0.883]

8 0.556593 1.282167 (0.411, 0.678]

9 -1.444533 0.589768 (-1.837, -0.883]

我想从上面创建一个新的数据框,如下所示,它基本上是基于 A_rank 的子集。

          A         B             A_rank  A_rank_open_low    A_rank_closed_hi
0 0.459759 0.152645 (0.411, 0.678] 0.411 0.678

5 0.677709 0.725274 (0.411, 0.678] 0.411 0.678

8 0.556593 1.282167 (0.411, 0.678] 0.411 0.678

我不想使用 qcut 使用整数标签,但希望直接使用 qcut 输出本身的标签,但我无法与作为范围的类别 (A_rank) 进行比较。由于我对这种数据类型缺乏了解,以下尝试失败了。

df2 = df[df['A_rank']=="(0.411, 0.678]"]

没有错误,但输出是:

Empty DataFrame    
Columns: [A, B, A_rank]
Index: []

df2 = df[df['A_rank']== pd.Categorical("(0.411, 0.678]")]

TypeError: Categoricals can only be compared if 'categories' are the same. Categories are different lengths

df2 = df[str(df['A_rank'])=="(0.411, 0.678]"] 

也给出了回溯

我在文档中搜索了分类索引和类别,但找不到太多内容。请帮帮我。

最佳答案

使用Interval :

df2 = df[df['A_rank']== pd.Interval(0.411, 0.678)]

关于python - Pandas 类别比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479846/

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