Как я могу использовать панды для вывода определенного столбца на основе ввода пользователем другого столбца? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь создать скрипт Python, используя панд, где он запрашивает у пользователя значение из столбца 'Name'(or column 0), а затем печатает значение в столбце 'Location'(or column 9).

Пока у меня есть следующее, но он печатает все столбцы в строке.Как я могу заставить его печатать определенный столбец?

import pandas as pd

df = pd.read_csv("Servers.csv")
user_input = raw_input("Enter server name: ")

for index, row in df.iterrows():
    if row[0] == user_input:
        print row

Я хотел бы, чтобы он печатал только 9-й столбец из строки labled 'Location', когда я вводил значение из первого столбца labled 'Name'.

В настоящее время при вводе значения из первого столбца печатается все столбцы в строке Name.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Не используйте цикл здесь, постройте серию и затем запросите серию через at.Это предполагает, что у вас нет повторяющихся имен.

df = pd.read_csv("Servers.csv")
series_map = df.set_index('Name')['Location']
user_input = raw_input("Enter server name: ")

print series_map.at[user_input]

Проблема с вашим методом петли заключается в том, что вы не индексируете row, вы можете просто использовать:

print row[9]
0 голосов
/ 24 января 2019

Добавление строки print(df[df['Name'] == user_input].loc[:,'Location'].values[0]) должно помочь.

Вот простой пример с кадром данных, содержащим 3 строки и столбца:

d = {'Name': ['John', 'Laura', 'Sam'], 
     'Food': ['Sushi', 'Spaghetti', 'Sandwich'], 
     'Location': ['Houston', 'San Francisco', 'Hawaii']}

df = pd.DataFrame(data = d)

    Name    Food        Location
0   John    Sushi       Houston
1   Laura   Spaghetti   San Francisco
2   Sam     Sandwich    Hawaii

Если user_input = 'John', вот как мыраспечатайте его местоположение:

print(df[df['Name'] == user_input].loc[:,'Location'].values[0])

, которое выведет строку Houston.

Этот подход позволяет избежать циклов и должен быть быстрее, чем использование .iterrows ().

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