[英]NLP: pre-processing dataset into a new dataset
我需要幫助處理未排序的數據集。 對不起,如果我是一個完整的菜鳥。 我以前從來沒有做過那樣的事。 如您所見,每個對話都由一個 dialogueID 標識,該 dialogueID 由多行“from”和“to”以及文本消息組成。 我想將來自 dialogueID 的同一發件人的短信連接到一列,並將接收方的短信連接到另一列。 這樣,我就可以得到一個只有 [dialogueID, sender, receiver] 的新 csv 文件。
我看了多個教程,真的很難弄清楚如何去做。 我在這篇9 年前的帖子中讀到,遍歷數據框並不是一個好主意。 有人可以用代碼片段幫助我,或者給我一個提示,告訴我如何正確地做到這一點而不會使事情過於復雜嗎? 我想到了類似下面這個偽代碼的東西,但是 100 萬行的性能不是很好,對吧?
while !endOfFile
for dialogueID in range (0, 1038324)
if dialogueID+1 == dialogueID and toValue.isnull()
concatenate textFromPrevRow + " " + textFromCurrentRow
add new string to table column sender
else
add text to column receiver
根據您的澄清,這就是我相信您正在尋找的。
創建一個聚合 function,它基本上將您的字符串值與換行符連接起來。 然后按dialogueID
分組並應用您的聚合。
d = {}
d['from'] = '\n'.join
d['to'] = '\n'.join
new_df = dialogue_dataframe.groupby('dialogueID', as_index=False).agg(d)
之后根據需要重命名列:
df.rename(columns={"from": "sender", "to": "receiver"})
不太確定我是否理解您要實現的目標,但也許這會提供一些見解。 也許寫幾行你希望得到的表格,以便更好地說明
雖然數據的確切結構(以及您的任務)並不完全清楚,但也許DataFrame.apply
或者更確切地說DataFrame.aggregate
可以幫助您加快速度。 另外,我會聚合成一本字典或 dataframe 由對話 ID 索引。 這樣您就可以輕松檢查給定的對話/發件人是否已經存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.