如何在具有唯一的键和序列值的列中唯一唯一的总和

  • 本文关键字:唯一 pandas group-by analysis
  • 更新时间 :
  • 英文 :


这是我的数据框架类似的东西:

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()文档。

最新更新