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) 中,那么您可以了解您正在进行的迭代
我有一个名为 '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) 中,那么您可以了解您正在进行的迭代