垂直堆叠的列表-无法遍历它们吗?

时间:2019-10-16 14:57:58

标签: python pandas list

我正在尝试过滤数据帧的不同列,以保留已在字典中定义的值。我写了一个函数来做到这一点:

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'键相关联的列表)如下:

vertical vs horizontal list

下面是带有测试列表的示例。手动定义测试列表后,它可以工作并保留所有值(修指甲,修脚等)

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”)

删除该行即可解决问题!

1 个答案:

答案 0 :(得分:0)

这些都是普通列表,没有“垂直”或“水平”列表。列出它们的方向不同的唯一原因是因为其中有较长的项目。

如果amenities_dict['Gym']已经是一个列表,也就是说,如果键Gym的值已经是一个列表,那么您就不需要执行list(amenities_dict['Gym'])