2017-06-02 225 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