如何根据用户输入访问DataFrame行,筛选指定国家对应的城市数据
问题解决方法
方法1:修改现有for循环实现筛选
你可以在for循环内部新增行级判断逻辑,匹配用户输入的国家名称后再输出对应城市,修改后的代码如下:
import pandas as pd df = pd.read_csv("file.csv") if continent == 'europe': country = input("Choose a country:") for index in df.index: # 先判断当前行的国家是否和输入的国家一致 if df.loc[index, 'country'] == country: # 匹配成功后只取city列的值打印 print(df.loc[index, 'city'])
注意:原有代码里的enumerate(df.index)没必要,直接遍历df.index就能拿到行索引,另外df.values[index]会返回整行所有列的值,不符合你只取城市的需求
方法2:更推荐的Pandas原生筛选写法(无需手动写for循环)
Pandas的布尔索引特性可以更高效的完成筛选,代码更简洁性能也更好,示例如下:
import pandas as pd df = pd.read_csv("file.csv") if continent == 'europe': country = input("Choose a country:") # 直接筛选出国家匹配的所有行,再提取city列 city_list = df[df['country'] == country]['city'].tolist() # 遍历打印结果即可 for city in city_list: print(city)
内容的提问来源于stack exchange,提问作者Kat
相关产品推荐
相关产品推荐

