2017-06-02 252 views
1

我第一次嘗試使用熊貓。我有一個有兩列的數據框:user_idstring。每個user_id可能有多個字符串,因此多次出現在數據幀中。我想從這個派生另一個數據框;其中只列出那些至少有2個或更多strings與之相關的user_ids根據列value_counts(pandas)過濾數據幀

我試過df[df['user_id'].value_counts()> 1],我認爲這是做這件事的標準方法,但它會產生IndexingError: Unalignable boolean Series key provided。有人能清除我的概念並提供正確的選擇嗎?

+0

相關和可能的欺騙:https://stackoverflow.com/questions/30485151/python-pandas-exclude-rows-below-a-certain-frequency-count – EdChum

回答

2

我認爲你需要transform,因爲需要掩碼的相同index作爲df。但如果使用value_countsindex被更改並且會引發錯誤。

df[df.groupby('user_id')['user_id'].transform('size') > 1] 
+0

你能解釋一下你的面具是什麼意思? –

+0

掩碼的條件與'df ['user_id']。'value_counts()> 1' – jezrael

+2

「掩碼」基本上是針對某個條件的真值或僞值的列表。掩碼通常用於子集數據。假設你有一個狗的姓名和年齡的數據框,你只想看看5歲以上的狗。面具基本上測試每行(每隻狗)是否大於五年,並返回一個真正的錯誤拉丁系列。 – blacksite