相关疑难解决方法(0)

选择MultiIndexed数据框中的行

我想单独提取'S'的箱子,其中每列(X和Y)> 0.5,或多个箱子> 0.5*'行数'.

在这个例子中;

'AR1'应该只选择bin 4,因为'X'和'Y'> 0.5(蓝色表示)

因为'X'和'Y'是>(4*0.5)(指示黄色),所以'PO1'应该选择第1,2,3和4个区域.

我之前尝试过这个for loop,但是没有正常工作; 有条件地选择多个(相邻)行

np.random.seed(0)

N = 20
S = ['AR1', 'PO1']

df = pd.DataFrame(
    {'X':np.random.uniform(-1,1,N),
     'Y':np.random.uniform(-1,1,N),
     'S':np.random.choice(S,N),
    })

df['bins_X'] = df.groupby('S')['X'].apply(pd.qcut, q=5, labels=np.arange(5))    # create bins per column 'S'

def func(df):                                                                   # create function to group per 'S' and their bins
    df1 = df.groupby(['S','bins_X']).sum()
    new_cols= list(zip(df1.columns.get_level_values(0)))
    df1.columns = pd.MultiIndex.from_tuples(new_cols)
    return df1

print func(df)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑

应该看起来像是问题中显示的df,但是不符合条件的行被过滤掉了.我检查的是这个; 分别或组合的任何行(bin)的X和Y值> 0.5.行的组合仅连续,2,3,4或5行组合.

即,0的行组合是; 0 + 1,0 + 1 + 2,0 + 1 + 2 + …

python numpy pandas

8
推荐指数
1
解决办法
359
查看次数

标签 统计

numpy ×1

pandas ×1

python ×1