运行以下代码时
import turtle
import pandas
FONT = 'monaco', 10, "bold"
screen = turtle.Screen()
screen.title("U.S. States Game")
# screen.bgpic("blank_states_img.gif")
image = "blank_states_img.gif"
screen.addshape(image)
turtle.shape(image)
data = pandas.read_csv("50_states.csv")
all_states = data.state.to_list()
answer_state = screen.textinput(title="Guess the state name", prompt="Whats another state name?").title()
print(answer_state)
if answer_state in all_states:
t = turtle.Turtle()
t.hideturtle()
t.penup()
state_data = data[data.state == answer_state]
t.goto(int(state_data.x), int(state_data.y))
t.write(answer_state, font=FONT)
screen.exitonclick()
这个错误不断出现:
未来警告:不建议在单个元素Series上调用int,并且将来会引发TypeError
。使用int(ser.iloc[0])
代替
我该怎么办?
2条答案
按热度按时间mbyulnm01#
这是一个未来的警告,意味着你的代码目前没有问题,但在未来的pnadas更新中,你使用的代码将不再受支持,而是会引发一个错误。
我认为第22行(
t.goto(int(state_data.x), int(state_data.y))
)导致了警告。有两个解决方案,一个比另一个更好:
1.更改您的代码以使用不同的方法(错误建议的
int(ser.iloc[0])
),这是更好的方法,因为它将在现在和未来的版本中工作。Here是它建议使用的代码的文档。1.确保只在支持您的实现的版本上运行代码。虽然可能,这是一个糟糕的选择,如果可能的话,不应该选择。
cgfeq70w2#
当运行这两行时:
第一行是“获取状态等于answer_state的所有数据元素”,但是可以有任意数量的这样的元素;该操作返回一个dataframe,data_state.x返回一个series,但是如果该series有多个元素,则无法将其转换为单个int。Python尝试了,但未来的警告似乎让您知道该功能可能不会存在很长时间。将上面的第二行更改为:
它应该对您有用,尽管如果在data.state == answer_state中没有数据,您仍然可能会遇到一些问题!
P.S.对于将来的堆栈溢出帖子,请确保在帖子标题中包含有关错误和平台的信息