我有此推文数据框,我将其分组在“对话”中,并希望获取每个对话的转弯索引。因此,我创建了Index的新列,并根据其是否属于一个Dialogue或另一个对话将值添加到for循环中。当我评估数据框的新列(这是熊猫系列)时,我可以看到添加了新值,但是如果我整体评估数据框,则这些值仍为默认值。对如何调试它一无所知。
***好的,所以当我创建一个虚拟数据集来附加此帖子时,我意识到问题出在代码的前一部分,其中我过滤出的组不小于8条记录。当我注释代码的这一部分时,该值会在新列中正确更新,但是当存在此部分时,该列将保留默认值。 我已经意识到,拥有的代码并不是实现我想要的最佳方法,我应该使用apply,并且在代码的第一部分,我得到了对话的轮数,所以我可以用它来填充在“索引”列中,但我仍然想知道为什么未更新该值。
示例代码:
# I created a table to get the counts of each Dialogues
counts = df.groupby('Dialogue').count()
counts['Dialogue_'] = counts.index
counts_ = counts[['Dialogue_', 'id']]
counts = counts_[(counts_[['id']] > 8)["id"]]
count_id = counts.Dialogue_
df = df[df['Dialogue'].isin(count_id)]
#So if I comment the part above the Index column gets updated correctly
j=2
df["Index"] = int()
df["Index"].iloc[0]=1
#pd.Series(range(1,13))
for i in range(1, len(df["id"])):
if (int(df["Dialogue"].iloc[i]) == int(df["Dialogue"].iloc[i - 1])):
df["Index"][i] = j
j += 1
else:
j=1
df["Index"][i] = j
j += 1
#Sample data
id Dialogue created_at
316 1 Sat Aug 06 01:44:03 +0000 2016
317 1 Tue Oct 31 22:11:33 +0000 2017
485 2 Tue Oct 31 22:27:38 +0000 2017
486 2 Tue Oct 31 22:33:11 +0000 2017
488 2 Tue Oct 31 21:33:48 +0000 2017
487 2 Tue Oct 31 22:52:37 +0000 2017
489 2 Tue Oct 31 22:25:31 +0000 2017
490 2 Tue Oct 31 22:28:50 +0000 2017
493 2 Tue Oct 31 21:18:55 +0000 2017
491 2 Tue Oct 31 23:07:41 +0000 2017
492 2 Wed Nov 01 15:10:21 +0000 2017
494 2 Sun Oct 29 16:56:47 +0000 2017
713862 2 Sun Oct 29 16:59:23 +0000 2017
495 2 Sun Oct 29 15:59:35 +0000 2017
496 2 Tue Oct 31 22:23:07 +0000 2017
498 3 Tue Oct 31 22:22:01 +0000 2017
499 3 Tue Oct 31 22:39:33 +0000 2017
500 3 Tue Oct 31 22:39:44 +0000 2017
501 3 Tue Oct 31 20:52:02 +0000 2017
507 3 Tue Oct 31 22:22:00 +0000 2017
502 3 Tue Oct 31 19:21:13 +0000 2017
503 3 Tue Oct 31 19:18:45 +0000 2017
504 3 Tue Oct 31 18:44:51 +0000 2017
2584875 3 Tue Oct 31 19:11:03 +0000 2017
因此,当我评估df [“ Index”]时,我看到正确的数字,但是当我看到df时,值仍为0。这怎么可能?