通过合并列访问熊猫中的行

时间:2020-01-23 14:07:08

标签: python pandas dataframe

我目前正在解决一个需要处理合并数据的问题。我的目标是获取与给定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()

希望我能弄清楚。

1 个答案:

答案 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)}

请参阅:Indexing with an IntervalIndex