Как получить уникальную сумму в столбце с уникальными ключами и значениями последовательности - PullRequest
0 голосов
/ 15 мая 2019

Вот мой фрейм данных примерно так:

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).Для клиента по имени Джеймс его объем перевозки составляет 151 между 5 и 6, 96 между 2 и 3.

Я не понял, как его кодировать.

Я не понял, какзакодируйте его. сильный текст

1 Ответ

0 голосов
/ 15 мая 2019

Пожалуйста, пройдите SO тур и прочитайте о Как спросить .Это поможет вам быстрее получить полезные ответы.

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() документацию здесь .

...