我正在用它来弄假人
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
答案 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