Передать имена в список и использовать «содержит» для каждого - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть датафрейм, в котором один из столбцов с именем proj содержит предложение в каждой строке, и в этом предложении упоминается название города.Я хочу выполнить условие if, что при передаче пароля будут доступны данные другого города.

proj
sd_32 New York
eo_31 Lisbon
..

Пример.

x = pd.read_csv(r'C:\Users\user\Desktop\Dataset.csv', sep = ',')
while True:
    passw = input('Password').upper()
    if not passw in ('A','B'):
        print('Try again')
        continue
    else:
        break
if passw == 'A':
    df = x[x['proj'].str.contains('New York')]
    print(df) 
elif passw == 'B':
    df = x[x['proj'].str.contains('Lisbon')]
    print(df)   

Как это сделать вбольше Pythonic way?

Я думал о создании списка:

city = ['New York','Lisbon','Berlin',..] #unique names of cities

и затем передал это в коде, который для каждого отдельного города, в зависимости от пароля, обрабатывает if как ясделал, но с этой идеей.Как я могу продолжить это?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Возможно использовать dict с паролями в качестве ключа и названиями городов в качестве значений: cities = {'A': 'New York', 'B': 'Lisbon', ...}. Следует признать, что вам все еще нужно проверить действительные ключи, но это происходит в цикле выше, когда вы запрашиваете ввод пароля (используя клавиши dict):

cities = {'A': 'New York', 'B': 'Lisbon'}
x = pd.read_csv(r'C:\Users\user\Desktop\Dataset.csv', sep = ',')
while True:
    passw = input('Password').upper()
    if passw not in cities:   # `in cities` same as `in cities.keys()`
        print('Try again')
        continue
    else:
        break
df = x[x['proj'].str.contains(cities[passw])]
print(df)
0 голосов
/ 17 сентября 2018

Вы можете использовать dict в вашем случае

Пример:

d = {"A": 'New York', "B": 'Lisbon'}
if passw in d:
    df = x[x['proj'].str.contains(d[passw])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...