Python - возникли проблемы с pandas .DataFrame.append - PullRequest
0 голосов
/ 20 марта 2020

Может кто-нибудь помочь мне выяснить, почему quer.append (l) не работает? Мой запрос для 'quer' и 'l', кажется, работает правильно. Quer возвращает 31 строку (все строки, которые имеют значение «YES» в столбце «Hill». И «l» возвращает 9 строк (все строки, которые имеют значение «YES» в столбце «Подводный мир»). Затем я пытаюсь добавить эти две строки вместе, но это не Это не похоже на работу. «Возвратный запрос» просто возвращает 31 ДА, которые находятся в столбце «Hill», и не добавляет «l» фрейм данных

CSV: https://docs.google.com/spreadsheets/d/1PjnN00bikJfY7mO3xt4nV5Ua1yOIsh8DycGqed6hWD8/edit?usp=sharing

Рабочий процесс: сохраните файл csv в виде файла Monsters.csv и python в одной папке и запустите файл python

import pandas as pd
import os

abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)

currentDir = os.getcwd()

data = pd.read_csv(r'Monsters.csv')

def biomes(biome):
        ind = 0
        for i in range(len(biome)):
            if i == 0:
                quer = data.query("{} == 'YES'".format(biome[ind]))
                print ("Hill:", quer)  # returns 31 rows
            if i > 0:
                l = data.query("{} == 'YES'".format(biome[ind]))
                quer.append(l)   #this append is not working
                print ("Underwater: ", l ) #returns 9 rows
            ind += 1
        return quer # returns 31 rows (only the Hill biome) for some reason.

print(biomes(["Hill", "Coast"]))

1 Ответ

1 голос
/ 20 марта 2020

В соответствии с официальной Pandas документацией , DataFrame.append() возвращает новый объект - он не изменяет объект, для которого вызывается. Поэтому я считаю, что ваш append() создает новый DataFrame, но нигде не назначает его.

Попробуйте заменить quer.append(l) на quer = quer.append(l), чтобы решить эту проблему.

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