python - 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] })
解决方案
尝试这个:
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