簡體   English   中英

在 Pandas DataFrame 中對行進行分組

[英]Grouping rows in a Pandas DataFrame

我們正在使用一個非常大的 Twitter 數據庫,其中包含大約 490 萬個條目。 每個條目可以是推文,也可以是對推文的回復(當然也可以是對回復的回復)。 由於這些數據是使用 Twitter API 推文收集的,並且它們的回復沒有整齊地分組在 DataFrame 中,但許多條目介於兩者之間:

我們正在嘗試將推文與其相應的回復分組,以便我們可以對此對話進行情感分析,但這就是我們陷入困境的地方。 我們從反轉 DataFrame 開始,因為從最后一個回復到原始推文的搜索比相反的方式更容易。

現在我們將使用列id (原始推文 ID)和in_reply_to_status_id (指的是它被回復到的原始推文的 ID)。

本質上,我們想要創建某種 for 循環,它檢測in_reply_to_status_id為整數的第一行,然后通過將其與id列匹配將其鏈接到上面的回復/推文。 但它必須繼續這個過程,直到找到in_reply_to_status_idNone的行,因為這意味着你已經找到了原始推文(因為推文顯然不能是對某事的回復)。

所以這里的第一個條目是in_reply_to_status_id = 1244694453190897664,我們存儲這個條目並使用它來搜索它的“原始”推文: 但這給了我們一個新的in_reply_to_status_id 1243885949697888263 所以我們也存儲了這個條目,但也必須用這個新的in_reply_to_status_id尋找它的原始推文。 我們希望繼續這個過程,直到我們到達in_reply_to_status_idNone的條目,因為這標志着對話的結束。

有人對如何開始這樣的操作有任何想法嗎?

這似乎是一個相當困難的操作。 我認為我對您的問題有所了解(但遺憾的是,並非全部)。 在我看來,您應該首先按“in_reply_to_user”或“in_reply_to_status”對元素進行分組(我不知道兩者之間的確切區別),然后您應該驗證“in_reply_to_status”所在行的id == 'None' 出現在任何其他“in_reply_..”中。 在這種情況下,您將僅在第一部分中接收“頭部”推文,即其他人指向的推文,然后驗證其中是否有任何回復。 之后,在我看來,您應該通過在“回復”列中搜索它來遞歸檢查 id,直到對於每個鏈接都沒有它指向的值。 您可以嘗試遞歸地創建一個列表/元組/字典,您可以在其中附加鏈接和鏈接到的推文(像圖表一樣思考),然后您可以創建一個新的數據框,該數據框將包含包含每個節點的特定 ID/索引。 這是我的看法,希望對你有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM