有人可以帮我找出为什么quer.append(l)无法正常工作吗?我对'quer'和'l'的查询似乎正常工作。 quer返回31行(Hill列中的所有行均为“ YES”。'l'返回9行(Underwater列中的所有行均为“ YES”)。然后,我尝试将这两行附加在一起,但是“似乎不起作用。”“返回查询”仅返回Hill列中的31个YES,并且未附加“ 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"]))
根据official Pandas documentation,DataFrame.append()
返回一个新对象-它不会修改正在调用的对象。因此,我相信您的append()
正在创建一个新的DataFrame,但没有在任何地方分配它。
尝试用quer.append(l)
替换quer = quer.append(l)
来解决这个问题。