2016-04-15 47 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列保留在数据框中?我需要这些列供以后使用。 –

相关问题