这是我的数据框架类似的东西:
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、96之间的151。
。我不明白如何编码。
我不明白如何编码。强的文本
请进行SO Tour,并阅读有关如何提出的信息。这些将帮助您更快地收集有用的回复。
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
然后,您可以按照此答案中的步骤来创建组合。我在下面完成了一些简单的组合:
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()
文档。