我正在尝试过滤数据帧的不同列,以保留已在字典中定义的值。我写了一个函数来做到这一点:
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”。 (这是列表中的第一项)
list(amenities_dict ['Gym'])(即与comforts_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具有遍历“垂直”列表和“水平”列表的不同方式?如您所见,代码是完全相同的,只是列表有所变化。有什么办法可以使它们等效? (即,将“体育馆”列表水平放置)
先谢谢您!
编辑:
谢谢您的回答。发现了错误!
本人草率,但我留下了一行代码,其中实际上使用了倒置的comforts_dict来替换值(例如,所有“健身中心”,例如字符串为“ Gym”)
删除该行即可解决问题!
答案 0 :(得分:0)
这些都是普通列表,没有“垂直”或“水平”列表。列出它们的方向不同的唯一原因是因为其中有较长的项目。
如果amenities_dict['Gym']
已经是一个列表,也就是说,如果键Gym
的值已经是一个列表,那么您就不需要执行list(amenities_dict['Gym'])