我從用戶提交的表單中獲取包含大量行的CSV。每一行都包含一個用戶電子郵件和一個字段,供他們在其組中列出其他用戶電子郵件。到目前爲止,我已經使用Python和熊貓編寫了一個簡短的腳本,將CSV加載到數據框中並清理條目。根據共享值對行進行分組
我想分組排序的行,但我遇到了一些概念問題。由於它是用戶輸入的,因此列表不一定是完整的或拼寫正確的。處理這個問題的最好方法是什麼?我完全不熟悉解析這樣的數據,而是總體上缺乏經驗。
下面是一些例子的數據顯示我的意思:
email,group
[email protected], "['[email protected]','[email protected]']"
[email protected],
[email protected], "['[email protected]']"
[email protected], "['[email protected]','[email protected]']"
所以在這裏用戶1,用戶3,和USER4是在一組。問題是user3只列出了user1。
我的第一個想法是將提交用戶的電子郵件追加到組列表中,然後按字母順序對列表和列進行排序。但是,只有在每個人的組條目都完整的情況下才有效。
我不想親手挑選200個小組,但是我失去了如何繼續。 這是我目前的計劃在僞代碼:
data # dataframe containing imported CSV
sorted_groups # result dataframe with equivalent rows, but sorted into groups
sort(data) by len(data[group])
for each row in data:
append row to sorted_groups
search for rows where email == entry in groups
append matching rows to sorted_groups
remove matching rows from data
remove initial row from data
這必將對拼寫錯誤失敗,如果至少有一個人的組中得到的一切權利纔有效。不過,這是目前我擁有的最好的。
感謝您花時間閱讀本文。請讓我知道,如果我能澄清任何事情,並指出我在正確的方向!
謝謝,我認爲字典一定會有幫助。 – Wieschie 2015-02-24 00:11:47
對不起,我的編輯被時間限制吃掉了。 關於拼寫錯誤,我可以安全地假設他們自己的電子郵件是正確的。因此,通過此代碼,每行中的第一個用戶將成爲條目的關鍵字,是否正確?在這種情況下,如果用戶自己的電子郵件是該行中的第一個,則所有條目都應該是有效的。 (如果情況並非如此,它不會是世界末日)。 我也有其他數據與每個用戶關聯。處理這個問題的最好方法是將它們分組,然後將這些信息添加回其餘的數據。 – Wieschie 2015-02-24 00:18:08
使用此代碼,每封電子郵件都會在字典中獲取條目,指向它所屬的組,而不管它們是否是輸入該行的用戶。 – levis501 2015-02-24 00:30:55