я должен проверить несколько столбцов в диапазоне оставшихся двух столбцов - PullRequest
0 голосов
/ 13 мая 2019

у меня есть пандас DD1 =

  A    B    C   D   E   F
  10   18   13  11   9   25
  0    32   27  3  18   28
  4     6   3   29  2   23

и я хочу проверить, что столбцы от A до D находятся между диапазоном столбцов E и F. Я хочу, чтобы вывод был таким, если он находится в диапазоне в столбце результатов 0, в противном случае это значение выходит за пределы диапазона.

DD1 =

    A   B   C    D   E    F   Result
    10  18   13  11  9   25  0
     0  32   27  3  18   28  [0,32]
     4   6   3   29  2   23  29

Я пытался так:

 dd1=dd1.loc[dd1.iloc[:,0:3].between(dd1['E'],dd6['F'])]

1 Ответ

0 голосов
/ 13 мая 2019

Использование:

df1 = df.iloc[:, :4]

m1 = df1.gt(df['E'], axis=0)
m2 = df1.lt(df['F'], axis=0)

df['Result'] = df1.mask(m1 & m2).apply(lambda x: x.dropna().astype(int).tolist(), axis=1)
print (df)
    A   B   C   D   E   F      Result
0  10  18  13  11   9  25          []
1   0  32  27   3  18  28  [0, 32, 3]
2   4   6   3  29   2  23        [29]

При необходимости 0 для несогласованных значений:

s = df1.mask(m1 & m2).apply(lambda x: x.dropna().astype(int).tolist(), axis=1)
df['Result'] = np.where(s.astype(bool), s, 0)
print (df)
    A   B   C   D   E   F      Result
0  10  18  13  11   9  25           0
1   0  32  27   3  18  28  [0, 32, 3]
2   4   6   3  29   2  23        [29]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...