Выберите данные на основе нескольких критериев с помощью панд

Стандартный код состояния: EXIT_SUCCESS и EXIT_FAILURE, определенные в stdlib.h. Однако почти все используют 0 и 1 соответственно. Некоторое программное обеспечение будет использовать разные ненулевые коды для различных типов ошибок.

0
задан aguay091 16 January 2019 в 17:11
поделиться

2 ответа

Вот рабочий пример.

import pandas as pd
import random

a = random.sample([0,1]*5, 10)
b = random.sample([0,1]*5, 10)
ab = random.sample([0,1]*5, 10)
bc = random.sample([0,1]*5, 10)

df = pd.DataFrame({'A':a,'B':b, 'AB':ab,'BC':bc})
df

    A   B   AB  BC
0   0   1   1   0
1   1   0   0   1
2   0   1   0   0
3   1   0   1   1
4   0   1   1   0
5   0   0   1   1
6   1   1   0   0
7   1   0   0   0
8   0   0   0   1
9   1   1   1   1

df[(df['A']==df['AB']) & (df['B']==df['BC'])]

Выходные данные представляют собой новый фрейм данных с наблюдениями, которые соответствуют установленным критериям.

0
ответ дан Lucas 16 January 2019 в 17:11
поделиться

Вам просто нужно добавить условия в круглых скобках внутри вашего .loc:

Сначала создайте сырой образец данных, поскольку вы не предоставили его, кроме изображения:

# creating the values, first one will be ID, then next 4 will be the values to compare
check_values = [
    [1, 5, 10, 20, 30],
    [2, 5, 11, 32, 11],
    [3, 10, 10, 20, 20],
    [4, 9, 9, 11, 11],
    [5, 11, 23, 41, 11]
]

# creating columns names
check_cols = ['id', 'A', 'B', 'C', 'D']

# making the DataFrame
dfcheck = pd.DataFrame(check_values, columns=check_cols)

# Setting the id column, just because
dfcheck.set_index('id', inplace=True)

Решение , где вам нужно вложить каждое условие в круглые скобки:

dfcheck.loc[(dfcheck['A'] == dfcheck['B']) & (dfcheck['C'] == dfcheck['D'])]

РЕДАКТИРОВАТЬ: Что вы пропустили / сделали неправильно?:

Глядя на ваш фильтр, вы добавляете ненужные dfMerged в круглые скобки, ваш код разбит на строки (удалите все внутри «** CODE **»):

dfequal=
dfMerged.loc[(dfMerged['MetCode']==dfMerged['GCD_METCODE']) 
& (**dfMerged[**dfMerged['Zone Code']==dfMerged['GCD_Senior_ZONE']**]**) 
& (**dfMerged[**dfMerged['Municipality Code']==dfMerged['GCD_CSDUID']**]**)]

Итак, вы видите, что вы ищете в поиске, что это не нужно? Должно быть:

dfequal=
dfMerged.loc[(dfMerged['MetCode']==dfMerged['GCD_METCODE']) 
& (dfMerged['Zone Code']==dfMerged['GCD_Senior_ZONE']) 
& (dfMerged['Municipality Code']==dfMerged['GCD_CSDUID'])]
0
ответ дан mrbTT 16 January 2019 в 17:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: