Панды Перебирайте строки, сравнивайте значение столбца со строкой в ​​списке, возвращайте значение из другого столбца - PullRequest
0 голосов
/ 09 марта 2019

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

list_of_words = 'yes', 'no', 'maybe'
appendList = []
    for word in list_of_words: 
        for row in dataframe1.iterrows():
            if row['A'] == word:
                appendList.append(row['B'])
                return appendList

Проблема в том, что я не уверен, как сравнить значение в списке со значением столбца. Я довольно новичок в пандах и питоне в целом, но до сих пор удобные методы были великолепны. Просто не знаете, как это сделать, чтобы вернуть то, что мне нужно. Буду признателен за любую помощь или совет для любых документов, которые могут помочь!

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

В вашем примере каждый row представляет собой двухэлементный кортеж, который индексируется с помощью целого числа: row[0] - это номер строки, а row[1] - это pandas.Series .Так что это TypeError для использования выражения row['A'].

>>> row['A']
TypeError: tuple indices must be integers or slices, not str

Вы можете преобразовать pandas.Series в обычный список Python, содержащий элементы этой строки, используя pandas.Series.tolist () , а затем выполнить сравнение:

for row in dataframe1.iterrows():
    row_data = row[1].tolist() 
    if row_data[0] == word:
        appendList.append(row_data[1])

Будучи списком, row_data должен быть проиндексирован с использованием целого числа.Это делает ваш код менее читабельным.

0 голосов
/ 09 марта 2019

Попробуйте следующее:

list_of_words = ['yes', 'no', 'maybe']

appendList = dataframe1.B[dataframe1.A.isin(list_of_words)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...