【问题标题】:How to unique sum in a column with unique keys and sequence values如何在具有唯一键和序列值的列中唯一求和
【发布时间】:2019-10-03 01:04:50
【问题描述】:

这是我的数据框,如下所示:

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。

我不明白如何编码。

我不明白如何编码。强文本

【问题讨论】:

  • 我不太明白你在问什么。请创建一个minimal reproducible example
  • 再次检查我的问题。我已经更新了
  • 您通过包含图像链接使您的问题更少可读,并且您实际上并没有更改问题的内容。另请查看How to Ask
  • 您现在发现问题和数据正确了吗?
  • 给我一点时间。我是这个地方的新手。我现在会正确更改它

标签: pandas group-by analysis


【解决方案1】:

请使用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

【讨论】:

  • Module object Dataframe 是不可调用的,它说
  • 您是否在代码开头调用import pandas as pd
  • 我相信您看到的错误与您发布的错误不同。我建议在 StackOverflow 上搜索解决方案。如果没有任何帮助,那么我会发布一个单独的问题来尝试找到解决该问题的方法。
  • 我会正确措辞并再次提问
猜你喜欢
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多