首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分组和存储数据集

分组和存储数据集
EN

Stack Overflow用户
提问于 2022-09-20 02:26:38
回答 1查看 32关注 0票数 0

我有以下数据集:

代码语言:javascript
复制
+-------+--------+---------------+----------+
| store | loc_id | competitor_id | distance |
+-------+--------+---------------+----------+
| 1     | 235467 | 567           | 1        |
| .     | .      | .             | .        |
| .     | .      | .             | .        |
| .     | .      | .             | .        |
| 1200  | 236667 | 7890          | 70       |
+-------+--------+---------------+----------+

其中:

store:拥有每个商店的唯一编号--总数为1200个

loc_id:每个商店都有唯一的位置号--总共1200个。

competitors:有各种各样的竞争对手ID。-共计600人

distance:竞争对手离商店的距离是多少英里--最多70英里。

这个数据集很大,大约有500万行。

competitors可以在每个商店重复,因为它们可能在不同的距离,还可以重复完全不同的存储,这意味着:

代码语言:javascript
复制
+-------+--------+---------------+----------+
| store | loc_id | competitor_id | distance |
+-------+--------+---------------+----------+
| 1     | 235467 | 567           | 1        |
| 1     | 235467 | 567           | 20       |
| 65    | 235532 | 567           | 5        |
+-------+--------+---------------+----------+

我需要将每个竞争对手的事件组合在一个桶的距离内,生成的数据集如下:

代码语言:javascript
复制
+-------+--------+---------------+---------------+----------------+----------+
| store | loc_id | competitor_id | under_10miles | ten_to_20miles | above_20 | 
+-------+--------+---------------+---------------+----------------+----------+
| 1     | 235467 | 567           | 2             | 0              | 15       |
| .     | .      | .             | .             | .              | .        |
| .     | .      | .             | .             | .              | .        |
| .     | .      | .             | .             | .              | .        |
| 1200  | 236667 | 7890          | 1             | 5              | 0        |
+-------+--------+---------------+---------------+----------------+----------+

意思:

离第一商店不到10英里,有两个567家竞争对手。

我正在使用木星笔记本,所以在Python或Pandas方面的任何帮助都将是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-20 03:38:59

您可以使用groupby().value_counts()

代码语言:javascript
复制
(df.groupby(['store', 'loc_id', 'competitor_id'])
   ['distance'].value_counts(bins=[-1, 10, 20, np.inf])
   .unstack(level=-1, fill_values=0)
)

pd.crosstabpd.cut

代码语言:javascript
复制
pd.crosstab([df['store'], df['loc_id'], df['competitor_id']],
            pd.cut(df['distance'], bins=[-1,10,20, np.inf],
                   labels=['<10', '10-20', '>20'])
           )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73781017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档