如何仅获取在熊猫中出现超过X时间的那些值的假人

时间:2019-06-04 08:57:41

标签: python pandas

我正在用它来弄假人 train = pd.get_dummies(train, columns=['LSOA code','Last outcome category','Month'])

但是我只想让那些价值重复超过1000次的假人

样本DF:

id     col1
1      aaa
2      aaa
3      aaa
4      bbb
5      bbb
6      ccc

使用以下代码的当前输出:df= pd.get_dummies(df, columns=['col1'])

id     aaa   bbb   ccc
1      1     0      0
2      1     0      0
3      1     0      0
4      0     1      0
5      0     1      0
6      0     0      0

我想要的东西:只获得那些重复多次的值的假人

id     aaa   bbb   
1      1     0     
2      1     0      
3      1     0      
4      0     1      
5      0     1      
6      0     0      

1 个答案:

答案 0 :(得分:4)

尝试使用Series.value_counts和逻辑条件> 1000创建“有效”类别的列表。

然后以pandas.get_dummies类型调用pandas.Categorical,并以有效的categories列表作为参数传递:

cats = df['col1'].value_counts()[lambda x: x > 1000].index

pd.get_dummies(pd.Categorical(df['col1'], categories=cats))

使用您的示例

df = pd.DataFrame({'id': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6}, 'col1': {0: 'aaa', 1: 'aaa', 2: 'aaa', 3: 'bbb', 4: 'bbb', 5: 'ccc'}})

cats = df['col1'].value_counts()[lambda x: x > 1].index

pd.get_dummies(pd.Categorical(df['col1'], categories=cats))

[出]

   aaa  bbb
0    1    0
1    1    0
2    1    0
3    0    1
4    0    1
5    0    0