我的挑战是根据出现的频率为VENDOR ID赋予通用ID。
BaseData.groupby(["VENDOR_ID"]).size().sort_values(ascending=False,na_position='last')
返回以下内容。
VENDOR_ID
1111 5000
1112 4500
1113 4000
1114 3500
1115 3000
1116 880
1117 500
1118 300
1119 200
1120 20
左列是供应商ID,右列是出现的频率。 我想保留前5个最频繁出现的供应商ID的供应商ID。对于所有剩余的供应商ID,我想将现有的供应商ID替换为通用的供应商ID 9999。
感谢您提供帮助以完成此任务。
答案 0 :(得分:1)
.map
五个最大的供应商,它们将其余的映射到NaN
,然后将其映射到具有通用值的.fillna
:
df['VENDOR_ID'] = df.VENDOR_ID.map(
dict((i, i) for i in df.groupby('VENDOR_ID').size().nlargest(5).index)
).fillna('9999')
答案 1 :(得分:0)
这应该为您解决
runAllManagedModulesForAllRequests="false"
<system.webServer>
<defaultDocument>
<files>
<clear/>
<add value="Default.aspx"/>
</files>
</defaultDocument>
</system.webServer>
答案 2 :(得分:0)
尝试:
vendor_id = [1,2,3,4,5,6,7,8,9]
frequency = [5000,4000,3000,3500,880,500,400,300,300]
df = pd.DataFrame({'vendor_id':vendor_id, 'frequency':frequency})
df = df.sort_values('frequency', ascending=False)
fifth_frequency = df.iloc[4]['frequency']
df['vendor_id'] = df.apply(lambda x: x[0] if x[1]>=fifth_frequency else 9999, axis=1)
答案 3 :(得分:0)
你可以让
i = BaseData.groupby(["VENDOR_ID"]).size().sort_values(ascending=False,na_position='last')[5:]
BaseData[BaseData['VENDOR_ID'].isin(i)] = 9999