我目前正在解决一个需要处理合并数据的问题。我的目标是获取与给定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()
希望我能弄清楚。
答案 0 :(得分:3)
已更新
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
-创建DataFrame列表
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]
-创建DataFrame的字典
df_d = {i:df.set_index('Beta Bins').loc[[val]].reset_index() for i,val in enumerate(list_select,1)}