python 嵌套 for 循环无限期地保持 运行,但正在创建预期的列表

python nested for loop keeps running indefinitely, yet the intended list is being created

我有一个名为 'dft' 的 Netflix 电视节目和电影的数据框,其中有一列名为“listed_in”,其中的条目是电视节目分类的所有类型的字符串。每个行条目都有多个不同长度的流派分类。流派以字符串形式书写,并以逗号分隔。

单个条目类似于,例如:'Documentary'、'International TV Shows'、'Crime TV Shows'。另一个行条目可能有不同数量的分类,其中一些可能与其他行条目的一些类型相同。

现在我想创建一个包含所有行中唯一值的列表。

genres = []

for i in range(0,len(dft['listed_in'].str.split(','))):
    for j in range(0,len(dft['listed_in'].str.split(',')[i])):
        if (dft['listed_in'].str.split(',')[i][j]) not in genres:
            genres.append(dft['listed_in'].str.split(',')[i][j])
        else:
            pass

这将无限期地保留内核 运行。但问题是,正在创建列表。如果我在一段时间后中断内核,并在那里打印列表。

然后,我从这个列表中创建一个数据框,目的是让一列包含每种类型在原始数据框中出现的次数。

data = {'Genres':genres,'count':[0 for i in range(0,len(genres))]}
gnr = pd.DataFrame(data = data)

然后将计数列更改为每个流派的出现次数:

for i in range(0,65):
    for j in range(0,514):
        if gnr.loc[i,'Genres'] in (dft['listed_in'].str.split(',').index[j]):
            gnr.loc[i,'count'] = gnr.loc[i,'count'] + dft['listed_in'].str.split(',').value_counts()[j]
        else:
            pass

然后这段代码再次无限期地保持 运行,但在中断它之后我看到第一个条目的计数在 gnr 数据帧中更新了。

我不知道发生了什么。

您确定进程确实挂起了吗?具有 pandas 的循环比您预期的要慢得多,尤其是您正在执行的迭代次数 (65*514)。如果您还没有将 id 放入 print(i) 中,那么您可以了解您正在进行的迭代