垂直堆积的列表不能遍历它们?

2024-05-23 17:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图过滤数据帧的不同列,以保留字典中已经定义的值。为此我编写了一个函数:

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

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在遍历“垂直”列表和“水平”列表时有不同的方法?正如你所看到的代码是完全相同的,它的列表改变。我能不能把它们等同起来?(把健身清单翻成水平)

提前谢谢!你知道吗

编辑:

谢谢你的回答。发现了错误!你知道吗

从我的角度来看,这是一个草率的问题,但我留下了一行代码,其中实际使用了倒过来的dict来替换值(例如,所有的“健身中心”都像字符串到“健身房”)

删除该行解决了问题!你知道吗


Tags: 函数in列表forif字典定义def
1条回答
网友
1楼 · 发布于 2024-05-23 17:29:32

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

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

相关问题 更多 >