首页 > 解决方案 > Python - 成对计数项目

问题描述

你好^^我正在研究这个东西2天,我找不到解决方案。


在 kaggle.com 中有一个 Olist Store 订单的巴西电子商务公共数据集。转到以下链接并下载数据集。https://www.kaggle.com/olistbr/brazilian-ecommerce。请注意,数据分布到多个 csv 文件中。使用此数据集进行以下分析。

在这里,我们将发现城市之间的经济互动。我们将找到城市之间的订单总数。意思是,城市对“圣保罗”和“里约热内卢”之间的经济互动是“圣保罗”作为客户城市和“里约热内卢”作为卖方城市的订单数量之和,反之(“圣保罗” paulo”作为卖方城市,“rio de janeiro”作为客户城市)。在计算每个城市对的经济互动后,返回就总订单数而言互动最高的 10 个城市。

您的解决方案中的函数应将数据集的文件夹作为输入。提示:合并文件时,可以使用以下顺序:

数据=pd.merge(pd.merge(pd.merge(pd.merge(pd.merge(order_items,products),product_translation),or ders),sellers),customers)

我尝试将 Groupby 函数用作-

data.groupby(['seller_city','customer_city'],as_index = False).count().reset_index('Count')

Tl;博士

正如您在下面看到的,有两列称为 col1 和 col2。从 col1 到 col2 有一些事务。我想计算每笔交易。我

但它给了我一个错误的输出。

输入:

b = pd.DataFrame({'col1':['a','a','b','b','c','d'], 'col2':['b','b','a','a','d','c']})

输出应该是:

pd.DataFrame({'a-b':[2],'b-a':[2],'c-d':[1],'d-c':[1] })

标签: pythonpandas

解决方案


尝试这个:

b['col3'] = (b['col1'] + '-' + b['col2'])
print(b.groupby('col3').size())

输出:

a-b    2
b-a    2
c-d    1
d-c    1

编辑 1

根据您的输入数据(如评论),这是我制作的 df 和结果

代码:

df[['seller_city','customer_city']]

输出:

            seller_city         customer_city
0         volta redonda  sao jose dos pinhais
1         volta redonda  sao jose dos pinhais
2  sao jose dos pinhais         volta redonda

代码:

df.groupby((df['seller_city'] + '-' + df['customer_city'])).size()

输出:

sao jose dos pinhais-volta redonda    1
volta redonda-sao jose dos pinhais    2

推荐阅读