Czy ktoś tutaj może mi pomóc w pracy nad dokumentem xlsx z pandą?

Problem w tym, że: mam plik z dwiema kolumnami. Chcę pobrać wartości z kolumny „A” (są one powtarzalne) i odpowiednie z kolumny „B” i zsumować.

Przykład:

123abc  100
zxc345  500
123abc 120
zxc345 800
123abc 100

Chciałbym mieć:

123abc 320
zxc345 1300

Na razie mój kod sortuje mi tylko ten plik:

123abc  100
        120
zxc345  500
        800

Zwróć też uwagę, że pojawia się tylko raz wpis: "123abc 100", mimo że jest powtarzalny.

Z góry dziękuję!

Oto kod:

from sys import argv
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import sys

# print("ilosc argumentow",len(sys.argv))

if len(sys.argv) < 2:
        print("Give me Excel file: " +  sys.argv[0] + ' niezrealizowane.xlsx')
        quit()
else:
        print("*" * 50)
        print("""Pracuje na: """, sys.argv[1])
        print("*" * 50)



skrypt, ticket = argv

# ZGODNOSCI and NuMERKI are first row in each of affected columns.

data = pd.read_excel(ticket, index_col=None, na_values=['NA'], usecols = "F, H")
data2 = data.groupby(['ZGODNOSCI', 'NuMERKI'])['NuMERKI'].sum()

data2.to_excel('Edzia-test.xlsx')
0
Irka Irenka 18 marzec 2020, 16:24

2 odpowiedzi

Najlepsza odpowiedź

Użyj funkcji Groupby

df.groupby('A')['B'].sum()

Przykład

>>> df
        A    B
0  123abc  100
1  zxc345  500
2  123abc  120
3  zxc345  800
4  123abc  100
>>> df.groupby('A')['B'].sum()
A
123abc     320
zxc345    1300
Name: B, dtype: int64
0
Vishnudev 18 marzec 2020, 13:31

Możesz spróbować tego -

df = pd.DataFrame({'col1':['123abc', 'zxc345', '123abc', 'zxc345', '123abc'], 'col2':[100,500,120,800,100]})
df
    col1  col2
0  123abc   100
1  zxc345   500
2  123abc   120
3  zxc345   800
4  123abc   100

df.groupby(['col1']).agg(col2_sum=('col2', 'sum')).reset_index()
     col1  col2_sum
0  123abc       320
1  zxc345      1300
0
Sajan 18 marzec 2020, 13:34