所以我一直在淘汰類似問題的解決方案,並保持擊中牆壁。我是python的新手,並且使用pandas/python作爲ETL,所以如果我沒有充分描述我的情況,請原諒我。Python,在另一列中計算值的發生頻率
我有兩個dataframes DF1的樣子:
Subscriber Key OtherID AnotherID
1 'abc' '12' '23'
2 'bcd' '45' '56'
3 'abc' '12' '23'
4 'abc' '12' '23'
5 'cde' '78' '90'
6 'bcd' '45' '56'
DF2的樣子:
Subscriber Key OtherID AnotherID
1 'abc' '12' '23'
2 'bcd' '45' '56'
3 'cde' '78' '90'
我試圖返回count次SubscriberKey數量: 'ABC' 發生在數據幀。找到值後,我想將計數附加到另一個數據幀(df2),這是我的第一個數據幀重複數據刪除。
它應該是這樣的:
Subscriber Key OtherID AnotherID Total Instances
1 'abc' '12' '23' '3'
2 'bcd' '45' '56' '1'
3 'cde' '78' '90' '1'
所以我所做的就是嘗試使用這行:
df1.groupby(['SubscriberKey']).size()
我只用「SubscriberKey」的原因是因爲某些行只有該列填寫'OtherID'和'AnotherID'空白。
我也試過Series.value_count()。當我嘗試使用groupby和size()並將df2 ['Total Instances']的值設置爲出現次數時,看起來這些值沒有正確排列。
例如新表看起來是這樣的:
Subscriber Key OtherID AnotherID Total Instances
1 'abc' '12' '23' '1'
2 'bcd' '45' '56' '3'
3 'cde' '78' '90' '2'
所以我最初的想法是,也許做GROUPBY時,該功能可以自動排序我的輸出。我試圖通過將groupby'd表保存爲csv來檢查,並意識到它只打印count列而不打印相關的subscriberkey列。
無論如何,有沒有人有任何投入,我怎麼能做到這一點?重申一下,我想基本上只是向df2添加一個列,以返回df1中出現次數或實例總數。
謝謝!
嗨太感謝你了!這實現了我想要的。你能否澄清我的邏輯是否正確。本質上,您將我的重複數據幀(df2)映射回df1。所以我的第一個關鍵字,df2中的'abc',將被「綁定」到df1中的所有'abc'關鍵字中?然後在映射上調用一個計數? 對不起,只是試圖瞭解你的線路是如何工作的 – user6749426
太棒了!很高興它有幫助。 'value_counts()'返回'Series',你想把它們映射到'Key'上的'df2'。請參考示例https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html – 0p3n5ourcE
所以我是: 1)創建一個字典,通過映射值在df1到df2在密鑰 2)使用.value_counts()調用一系列匹配值。 根據這篇文章,它看起來像我本質上是一個字典 – user6749426