如何使用跨列匹配对列值求和?

时间:2016-04-15 00:45:43

标签: python pandas

Python Pandas问题:

我有一个包含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中实现这一点(最好是在Pandas中)。有什么建议?谢谢!

注意:两个城市之间的顺序并不重要。无论是柏林 - 伦敦还是伦敦 - 柏林都可以。

1 个答案:

答案 0 :(得分: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