如何仅获取在大Pandas中出现超过X次的值的假人

2024-05-17 19:44:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我用这个来做假人 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      

Tags: columnsiddfgetcodetraincol1pd
1条回答
网友
1楼 · 发布于 2024-05-17 19:44:26

尝试使用^{}和逻辑条件> 1000创建“有效”类别的列表

然后调用^{}类型上的^{},并将此有效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

相关问题 更多 >