我有以下数据集:
+-------+--------+---------------+----------+
| 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
可以在每个商店重复,因为它们可能位于不同的距离,也可以在不同的商店重复,这意味着:
+-------+--------+---------------+----------+
| store | loc_id | competitor_id | distance |
+-------+--------+---------------+----------+
| 1 | 235467 | 567 | 1 |
| 1 | 235467 | 567 | 20 |
| 65 | 235532 | 567 | 5 |
+-------+--------+---------------+----------+
我需要将每个竞争对手在距离桶内的出现情况分组,其中结果数据集如下:
+-------+--------+---------------+---------------+----------------+----------+
| store | loc_id | competitor_id | under_10miles | ten_to_20miles | above_20 |
+-------+--------+---------------+---------------+----------------+----------+
| 1 | 235467 | 567 | 2 | 0 | 15 |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
| 1200 | 236667 | 7890 | 1 | 5 | 0 |
+-------+--------+---------------+---------------+----------------+----------+
含义:
有两个567的竞争者,距离1号店不到10英里。
我使用的是Jupyter笔记本电脑,所以如果有任何帮助,我将不胜感激。
1条答案
按热度按时间lf5gs5x21#
您可以使用
groupby().value_counts()
:或
pd.crosstab
和pd.cut
: