Выбор строк для кадра данных panda на основе условия - PullRequest
0 голосов
/ 10 ноября 2018
import numpy as np
import pandas as pd


lst2 = [[0.23,"f1"],[5.36,'f2']]
lst2_df = pd.DataFrame(lst2,index=list('pd'),columns=list('ab'))
lst2_df = lst2_df.rename({'a':'A'},axis='columns')

print(lst2_df)

m = ['1','f2']
print(lst2_df.loc[lst2_df['b'].isin(m)])

Если я хочу повторить это условие для каждого столбца , а не в жестком коде, что мне написать? Я пытался print(lst2_df.loc[lst2_df['A':'b'].isin(m)]) это не сработало. Я знаю, что на сайте есть похожие вопросы, но я не смог найти тот, который решает мою проблему.

1 Ответ

0 голосов
/ 11 ноября 2018

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

m = ['1','f2']
print(lst2_df.loc[lst2_df.isin(m).any(axis=1)])
      A   b
d  5.36  f2

Пояснение:

Сравнить DataFrame (все столбцы) по DataFrame.isin для логического значения:

print (lst2_df.isin(m))
       A      b
p  False  False
d  False   True

А затем добавьте DataFrame.any для проверки хотя бы одного значения True на строку:

print (lst2_df.isin(m).any(axis=1))
p    False
d     True
dtype: bool

И последний фильтр по boolean indexing.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...