如何在DataFrame中按列分组(忽略顺序)?

2024-05-18 05:51:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧(8列中的4列):

df = pd.DataFrame( {"departure_country":["Mexico","Mexico","United States","United States","United States","United States","Japan","United States","United States","United States"],"departure_city":["Guadalajara","Guadalajara","New York","Chicago","Los Angeles","Michigan","Tokyo","New York","New York","Chicago"],"destination_country":["United States","United States","United States","United States","Mexico","United States","United States","Mexico","United States","Japan"],"destination_city":["Los Angeles","Los Angeles","Chicago","New York","Guadalajara","New York","Chicago","Guadalajara","Michigan","Tokyo"]})

df
    departure_country   departure_city  destination_country destination_city
0   Mexico              Guadalajara     United States       Los Angeles
1   Mexico              Guadalajara     United States       Los Angeles
2   United States       New York        United States       Chicago
3   United States       Chicago         United States       New York
4   United States       Los Angeles     Mexico              Guadalajara
5   United States       Michigan        United States       New York
6   Japan               Tokyo           United States       Chicago
7   United States       New York        Mexico              Guadalajara
8   United States       New York        United States       Michigan
9   United States       Chicago         Japan               Tokyo

我想分析每个组中的数据,所以我想先按出发地和目的地的“同一对”分组,比如:

    departure_country   departure_city  destination_country destination_city
0   Mexico              Guadalajara     United States       Los Angeles
1   Mexico              Guadalajara     United States       Los Angeles
2   United States       Los Angeles     Mexico              Guadalajara
3   United States       New York        United States       Chicago
4   United States       Chicago         United States       New York
5   United States       Michigan        United States       New York
6   United States       New York        United States       Michigan
7   Japan               Tokyo           United States       Chicago
8   United States       Chicago         Japan               Tokyo
9   United States       New York        Mexico              Guadalajara

有可能在数据帧中实现它吗?我尝试了groupby和key-value,但失败了。 非常感谢您的帮助,谢谢


Tags: citynewcountryunitedyorkstatestokyodeparture
1条回答
网友
1楼 · 发布于 2024-05-18 05:51:00

我相信有人会想出更好的优化解决方案,但有一种方法是创建国家/城市对的排序元组并按其排序:

print (df.assign(country=[tuple(sorted(i)) for i in df.filter(like="country").to_numpy()],
                 city=[tuple(sorted(i)) for i in df.filter(like="city").to_numpy()])
         .sort_values(["country","city"], ascending=False).filter(like="_"))

  departure_country departure_city destination_country destination_city
5     United States       Michigan       United States         New York
8     United States       New York       United States         Michigan
2     United States       New York       United States          Chicago
3     United States        Chicago       United States         New York
7     United States       New York              Mexico      Guadalajara
0            Mexico    Guadalajara       United States      Los Angeles
1            Mexico    Guadalajara       United States      Los Angeles
4     United States    Los Angeles              Mexico      Guadalajara
6             Japan          Tokyo       United States          Chicago
9     United States        Chicago               Japan            Tokyo

相关问题 更多 >