我目前正在处理一个需要处理分箱数据的问题。我的目标是获得对应于给定 Beta 值的Alpha t1
和Alpha 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