2016-04-15 52 views
2

Python的大熊貓問題:如何對列值與列間匹配進行求和?

我有3列的表格:FROM_CITY,TO_CITY,Trip_Count和4行:

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

我要總結城市之間的旅行到具有2新表只有行:

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

我無法弄清楚如何在Python實現這一目標(最好在熊貓)。有什麼建議麼?謝謝!

注意:兩個城市之間的順序無關緊要。柏林 - 倫敦或倫敦 - 柏林都很好。

+0

在SQL我可以做到以下幾點,但我不知道怎麼做相同的蟒蛇: '選擇 至少(FROM_CITY,TO_CITY)的城市, 最大(FROM_CITY,TO_CITY)作爲other_city, 總和(trip_count),如從行程trip_count 組由至少(FROM_CITY,TO_CITY),最大(FROM_CITY,TO_CITY) ' –

回答

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() 

結果

    Trip_Count 
From_City To_City    
Berlin London   5 
Sydney Tokyo   10 
+0

甚至'df.apply(拉姆達X:[X [1],x [0],x [2]]如果x [1] ptrj

+0

@ptrj好!根據您的評論改進我的回答。 – su79eu7k

+0

感謝@ptrj和su79eu7k。你的兩個方法都給了我想要的東西,但是最終的數據幀只有1列,總和爲Trip_Count。如何將兩個GROUPBY列保留在數據框中?我需要這些列供以後使用。 –

相關問題