我试图过滤数据帧的不同列,以保留字典中已经定义的值。为此我编写了一个函数:
def replace_gym(x):
for i in list(amenities_dict['Gym']):
if x == i:
return(x)
然后对列应用函数:
transdf['Gym'] = transdf['Gym'].apply(lambda x: replace_gym(x))
现在出于某种原因,它只适用于便利设施列表中的第一项-似乎它没有遍历列表。列中的所有值都是“Gym”。(这是列表中的第一项)
列表(便利设施dict['Gym'])(即与便利设施dict字典中的'Gym'键相关联的列表)如下所示:
下面是一个测试列表示例。通过手动定义测试列表,它可以工作并保留所有值(美甲、修脚等)
testlist = ['Manicure', 'Pedicure', 'Bowling', 'Casino']
def replace_test(x):
for i in testlist:
if x == i:
return(x)
transdf['Gym'] = transdf['Gym'].apply(lambda x: replace_test(x))
所以我认为Python在遍历“垂直”列表和“水平”列表时有不同的方法?正如你所看到的代码是完全相同的,它的列表改变。我能不能把它们等同起来?(把健身清单翻成水平)
提前谢谢!你知道吗
编辑:
谢谢你的回答。发现了错误!你知道吗
从我的角度来看,这是一个草率的问题,但我留下了一行代码,其中实际使用了倒过来的dict来替换值(例如,所有的“健身中心”都像字符串到“健身房”)
删除该行解决了问题!你知道吗
这些都只是普通的列表,没有“垂直”或“水平”列表。它们以不同方向列出的唯一原因是其中一个项目较长。你知道吗
同样,如果
amenities_dict['Gym']
已经是一个列表,也就是说,如果键Gym
的值已经是一个列表,那么就不需要执行list(amenities_dict['Gym'])
相关问题 更多 >
编程相关推荐