Как выбрать строки с определенным значением, если я не знаю, к какому столбцу относится это значение? - PullRequest
1 голос
/ 07 апреля 2019

Например, вот кадр данных

1     2
high  wide
high  thin
short wide
short thin

Я хочу выбрать все строки, содержащие значение 'wide'. И давайте предположим, что я не знаю, какой столбец содержит такие значения.

Это просто упрощенный пример. Мне это нужно для того, чтобы перебрать уникальные значения таблицы, которые организованы в массив.

for uv in uniqueValues:
    valueObjects = """select all the rows that contain uv"""

Есть ли способ сделать это без определения столбца для каждого значения? Я имею в виду, это может работать

for uv in uniqueValues:
    for col in table.columns:
        colValues = table[col].unique()
        if uv in colValues:
            valueObjects = table[table[col] == uv]
            break

Но я надеюсь, что есть более элегантное решение.

1 Ответ

2 голосов
/ 07 апреля 2019

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

df = df[df.eq('wide').any(axis=1)]
#alternative
#df = df[(df == 'wide').any(axis=1)]
print (df)
       1     2
0   high  wide
2  short  wide

Детализация :

Сначала сравните все значения по DataFrame.eq или == для логического значения DataFrame:

print (df.eq('wide'))
       1      2
0  False   True
1  False  False
2  False   True
3  False  False

Затем проверьте по крайней мере один True на строки по DataFrame.any:

print(df.eq('wide').any(axis=1))
0     True
1    False
2     True
3    False
dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...