как отбросить строки, в которых сложение двух значений столбца не равно третьему? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть столбцы: 'RESIDENT UNITS' 'COMMERICAL UNITS' 'TOTAL UNITS'

Я хочу удалить строки, в которых 'RESTIDENT UNITS' + 'COMMERICAL UNITS'! = 'TOTAL UNITS'

Спасибо.!

Ответы [ 3 ]

2 голосов
/ 06 марта 2020
import pandas as pd
df = pd.DataFrame({'RESIDENT UNITS' : [1,2,3],
                   'COMMERICAL UNITS' : [2,3,4],
                   'TOTAL UNITS' : [3,4,7]})
df

df_new = df.loc[df['RESIDENT UNITS'] + df['COMMERICAL UNITS'] == df['TOTAL UNITS']]
df_new
0 голосов
/ 06 марта 2020
import pandas as pd
#create df with values that do not equal total
df = pd.DataFrame({'Residential':[5, 10, 15, 20],
                    'Commercial':[5, 10, 15, 20],
                    'Total':[10, 20, 30, 50]})

# Create an empty list
Row_list = []

# Iterate over each row
for index, rows in df.iterrows():
    # Create list for the current row
    my_list = [rows.Residential, rows.Commercial, rows.Total]

    # append the list to the final list
    Row_list.append(my_list)

#find which columns do not add to total and remove them
for i, x in enumerate(Row_list):
    if x[0] + x[1] != x[2]:
        Row_list.remove(x)

#transpose back into correct format of rows and columns
Column_list = [list(x) for x in zip(*Row_list)]

#create new df
new_df = pd.DataFrame({'Residential':Column_list[0],
                    'Commercial':Column_list[1],
                    'Total':Column_list[2]})
#print
print(new_df)

это довольно длинный способ сделать это, но шаг за шагом показывает процесс

0 голосов
/ 06 марта 2020

Вы можете попробовать что-то вроде:

data['r2']=(data['RESIDENT UNITS']+data['COMMERICAL UNITS'])!=data['TOTAL UNITS']
data=data[data['r2']].drop(columns='r2')

Я просто создал фиктивный столбец для хранения флага. Затем отфильтровал его на основе флагов True и, в конце концов, отбросил фиктивный столбец.

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