Фильтрация данных на основе столбцов без значений имен - PullRequest
0 голосов
/ 15 января 2019

У меня есть фрейм данных, который мне нужно отфильтровать, если значение двух столбцов для каждой строки больше двух конкретных чисел. Кроме того, важно, что я ничего не знаю о кадре данных, за исключением того, что эти столбцы являются числами -2 и -3

Например, у нас есть dataframe = pd.DataFrame(data=[[1,2,3,4],[5,6,7,8],[1,2,-3,4],[5,-6,7,8]]). Представьте, что нам нужно отфильтровать его, если столбцы -2 и -3 больше 0. В этом случае мы вернем только первые две строки.

Я пробовал использовать return dataframe[(dataframe[:, -3] >= 0) and (dataframe[:, -2] >= 0)], но выдает следующую ошибку: TypeError: unhashable type: 'slice'.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы можете сделать:

import pandas as pd

dataframe = pd.DataFrame(data=[[1,2,3,4],
                               [5,6,7,8],
                               [1,2,-3,4],
                               [5,-6,7,8]])

mask = (dataframe.iloc[:, [-3, 2]] >= 0).all(axis=1)

result = dataframe[mask]
print(result)

выход

   0  1  2  3
0  1  2  3  4
1  5  6  7  8
0 голосов
/ 15 января 2019

Используйте iloc для выбора столбцов по позициям и для botwise and используйте &:

df = dataframe[(dataframe.iloc[:, -3] >= 0) & (dataframe.iloc[:, -2] >= 0)]
print (df)
   0  1  2  3
0  1  2  3  4
1  5  6  7  8
...