这是我的数据框,如下所示:
df = pd.DataFrame({
'shipment_name':['A','A','A','A','A','B','B','B','B','B','B', 'C','C','C','C','C'],
'city_name':[2,3,4,5,6,1,2,3,4,5,6,5,6,7,8,9],
'volume':[46,46,46,46,46,50,50,50,50,50,50,55,55,55,55,55],
'customer_name':['James','James','James','James','James','James','James','James','James','James','James','James','James','James','James','James']
})
我想要一个能给我答案的代码,其值如下: 在城市2-3之间,总流量为(46 + 50 = 96),在城市5-6之间的总流量为(46 + 50 + 55 = 151)。对于名为James的客户,他的发货量在5到6之间为151,在2到3之间为96。
我不知道如何编码。
我不知道如何编码。强文本
答案 0 :(得分:0)
请带上SO tour并了解How to Ask。这些将帮助您更快地收集有用的回复。
IIUC,此代码应有助于您提出问题:
import pandas as pd
df = pd.DataFrame({
'shipment_name':['A','A','A','A','A','B','B','B','B','B','B', 'C','C','C','C','C'],
'city_name':[2,3,4,5,6,1,2,3,4,5,6,5,6,7,8,9],
'volume':[46,46,46,46,46,50,50,50,50,50,50,55,55,55,55,55],
'customer_name':['James','James','James','James','James','James','James','James','James','James','James','James','James','James','James','James']
})
u = df.groupby(['city_name']).sum()
给你
volume
city_name
1 50
2 96
3 96
4 96
5 151
6 151
7 55
8 55
9 55
然后您可以按照this answer中的步骤创建组合。我在下面做了一些简单的组合:
u = pd.DataFrame(np.abs(np.subtract.outer(u.volume, u.volume)), u.city_name, u.city_name)
stacked = u.stack()
stacked = pd.DataFrame({'cities': stacked.index.to_series(), 'diff': stacked})[['cities', 'diff']].reset_index(drop=True)
请阅读.groupby()
文档here。