通过分箱列访问熊猫中的行



我目前正在处理一个需要处理分箱数据的问题。我的目标是获得对应于给定 Beta 值的Alpha t1Alpha t2的值。在下面的数据帧中,您可以直观地理解我的意思。假设我的 Beta 值为 22.3,那么我想访问第 5 行中的 Alpha t1 和 Alpha t2。

Beta Bins  Alpha t1  Alpha t2
1       (0.0, 5.0]       0.0       0.0
2      (5.0, 10.0]       0.0       0.0
3     (10.0, 15.0]       0.0       0.0
4     (15.0, 20.0]       0.0       0.0
5     (20.0, 25.0]       0.0       0.0
6     (25.0, 30.0]       0.0       0.0
7     (30.0, 35.0]       0.0       0.0
8     (35.0, 40.0]       0.0       0.0
9     (40.0, 45.0]       0.0       0.0
10    (45.0, 50.0]       0.0       0.0
11    (50.0, 55.0]       0.0       0.0
12    (55.0, 60.0]       0.0       0.0
13    (60.0, 65.0]       0.0       0.0
14    (65.0, 70.0]       0.0       0.0

因此,当我尝试在 for 循环中访问此值时,我一直在尝试以下内容:

for i, val in enumerate(Beta):
dfi = df.loc[(df['Beta Bins'] == val)]

但是,我只收到一个空的数据帧。我想本地化与设置我的值的间隔相对应的行。那么,是否可以通过引用特定值来访问该分箱数据?

编辑

这是我生成数据的方式:

import numpy as np
import pandas as pd
bins = np.linspace(0,360,73)
alpha0_1 = np.tile(0, len(bins))
alpha0_2 = np.tile(0, len(bins))        
df = pd.DataFrame([bins,alpha0_1,alpha0_2]).T
df.columns = ['Beta Bins', 'Alpha 1', 'Alpha 2']
df['Beta Bins'] = pd.cut(df['Beta Bins'], bins)
df = df.dropna()

希望我设法说清楚。

已更新

df.set_index('Beta Bins').loc[[val]].reset_index()

例子

df.set_index('Beta Bins').loc[[2.5]].reset_index()
#    Beta Bins  Alpha 1  Alpha 2
#0  (0.0, 5.0]      0.0      0.0
df.set_index('Beta Bins').loc[[2.5,3,5,6]].reset_index()
#     Beta Bins  Alpha 1  Alpha 2
#0   (0.0, 5.0]      0.0      0.0
#1   (0.0, 5.0]      0.0      0.0
#2   (0.0, 5.0]      0.0      0.0
#3  (5.0, 10.0]      0.0      0.0

- 创建数据帧列表

list_select = [1,9,10,2,3,300,200,32,45]
df_l = [df.set_index('Beta Bins').loc[[val]].reset_index() for val in list_select]

- 创建数据帧的字典

df_d = {i:df.set_index('Beta Bins').loc[[val]].reset_index() for i,val in enumerate(list_select,1)}

请参阅:Indexing with an IntervalIndex

最新更新