2016-04-15 11 views
2

Python Pandas Frage:Wie summieren Sie Spaltenwerte mit Spaltenübereinstimmung?

Ich habe eine Tabelle mit drei Spalten: From_City, To_City, Trip_Count und 4 Reihen:

+-----------+---------+------------+ | From_City | To_City | Trip_Count | +-----------+---------+------------+ | Berlin | London | 2 | | London | Berlin | 3 | | Sydney | Tokyo | 4 | | Tokyo | Sydney | 6 | +-----------+---------+------------+

ich Reisen zwischen den Städten, in eine neue Tabelle summieren möchten, die 2 hat nur Zeilen:

+--------+------------+------------+ | City | Other_City | Trip_Count | +--------+------------+------------+ | Berlin | London | 5 | | Sydney | Tokyo | 10 | +--------+------------+------------+

ich kann nicht herausfinden, wie dies in Python zu erreichen (vorzugsweise in Pandas). Irgendwelche Vorschläge? Vielen Dank!

Hinweis: Bestellung zwischen zwei Städten spielt keine Rolle. entweder Berlin-London oder London-Berlin ist in Ordnung.

+0

In SQL konnte ich die folgende tun, aber ich bin nicht sicher, wie das gleiche in Python zu tun: 'wählen mindestens (from_city, to_city) als Stadt, größte (from_city, to_city) als other_city, Summe (trip_count) als trip_count von Reisen Gruppe von mindestens (from_city, to_city), am größten (from_city, to_city) ' –

Antwort

1
import pandas as pd 

df = pd.DataFrame({'From_City': ['Berlin', 'London', 'Sydney', 'Tokyo'], 'To_City': ['London', 'Berlin', 'Tokyo', 'Sydney'], 'Trip_Count': [2, 3, 4, 6]}) 

print df.apply(lambda x: sorted(x[:2].tolist())+[x[2]], axis=1).groupby(['From_City', 'To_City']).sum() 

Ergebnis

    Trip_Count 
From_City To_City    
Berlin London   5 
Sydney Tokyo   10 
+0

Oder sogar' df.apply (lambda x: [x [1], x [0], x [2]] wenn x [1] ptrj

+0

@ptrj Gut! Verbesserte meine Antwort ein wenig basierend auf Ihrem Kommentar. – su79eu7k

+0

Danke @ptrj und su79eu7k. Beide Methoden geben mir, was ich will, aber der resultierende Datenrahmen hat nur 1 Spalte, summiert Trip_Count. Wie behalte ich die zwei GROUPBY Spalten im Dataframe? Ich brauche diese Spalten für den späteren Gebrauch. –

Verwandte Themen