迭代 .itertuples() 的结果太慢

Iterating over results of .itertuples() is too slow

df -> ["user_id", "num_posts", "帖子" ...]

我的 df 由包含 reddit 用户帐户数据的行组成;其中每一行“posts”包含该用户的一系列独立帖子。

某些用户的帖子数量最多为 6000。

data = pd.DataFrame(columns=["user_id","posts"])
for row in df.itertuples():         
    for post in row[ : len(row[3])]:  
        new_row = [row[1], post ]
        data.loc[len(data)] = new_row

似乎内部 for 循环迭代 itertuples 的结果使得这非常慢!

即使我将单个用户可抓取的最大帖子数限制为 100,代码也不会 return 数小时甚至 运行 在高性能远程服务器上!

对如何改进运行时间有什么想法吗?

我用列表理解测试了你的代码节 'concat' 方法',我用列表理解快了 12 倍:

data = pd.concat([pd.DataFrame([[row[1], post] for post in row], columns=["user_id", "posts"])
                  for row in df.itertuples()], ignore_index=True)