0

我有一个包含 5 列的 100 万条记录的数据框。

unique_index,name,company_name,city_id,state_id

列 ,company_name有 100k 条唯一记录。这遵循幂律。前 5000 名company_names涵盖了 70% 的记录。

幂律

我想从对前 5000 名数据做出贡献的公司和剩余的集合中抽取相同数量的样本。

我试过了pd.qcut(df['company_name'],[0.25,1]。这给了我以下错误: TypeError: unorderable types: str() <= float()。不能qcut应用于字符串?

4

1 回答 1

1

您可以尝试抓住顶级公司value_counts(),然后创建一个新列,其中包含True/False/来自顶级公司。我认为它看起来像这样:

top5000 = df['company_name'].value_counts().index[0:5000].tolist()
df['InTop'] = df['company_name'].isin(top5000)

这将允许您从所在的组df['InTop'] == True和所在的组中进行采样df['InTop'] == False

于 2017-07-28T19:35:35.883 回答