今天在工作中遇到一個需求:有一個ABC三列的表,其中A列數據大量重複,且BC列不同。現在需要根據A列的數據,彙總A列去重並輸出重複次數最多的100行(N行)
原始表類似於這樣:
A | B | C |
FFFEFFFEFFF | 71956 | 1 |
FFFF7FFF7FF | 28994 | 2 |
DFF4DFF4DFF | 68109 | 3 |
1FF807F8000 | 63125 | 4 |
3FFF7FFF7FF | 27084 | 5 |
FFFFFFFFFAF | 90016 | 6 |
FFBFFFBF078 | 98219 | 7 |
1FF03EE33FF | 23629 | 8 |
CFC0F8FAFCF | 72986 | 9 |
8FFFF1F1F1E | 33263 | 10 |
FFFFFFFFFFF | 94116 | 11 |
如果用excel,解決辦法就是做一個透視表,求出A列各項目重複數據次數,然後在vlookup求出各BC列的值即可
但是如果元數據超過了1萬行,電腦會卡死的。
現在通過Python即可30秒求出100萬行,A列的計數項:
解決思路
1、先導入文件
pd.read_csv ,設置表頭names,設置分割符號:sep,設置標題行:skiprows
2、求助A列數據的各項目重複次數
loc=da['A'].value_counts()
3、取出前1000行
loc=loc[:N].keys()#前置前N行,加上key是表示只取值,取出A列的那個數據,不加key()就是輸出A列數據+重複次數
4、取出數據,並根據A列去重
C=da.loc[da['A'].isin(loc)]#限制A列在 loc的值內
C=C.drop_duplicates(['A'])#根據A列去重
5、保存
C.to_csv("22.csv",encoding='utf-8')
不知道這些思路是否對你有幫助,完整代碼可見: