我有下表,其中包含起點/終點城市和在起點-終點路線上停靠的額外城市。這是起點奧格斯堡和終點泰爾夫斯的示例。
| 起源 | 目的地 | 城市 | 城市.1 | 城市.2 | 城市.3 | 城市.4 | 城市.5 | 城市.6 | 城市.7 | 城市.8 | 城市.9 | 城市.10 | 城市.11 | 城市.12 | 城市.13 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | |||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | |||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | ||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | ||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | |||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | |||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | ||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 黑馬戈爾 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | |||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 黑馬戈爾 | 艾希多夫 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | ||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 黑馬戈爾 | 艾希多夫 | 伊爾斯霍芬 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | |
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | ||||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 黑馬戈爾 | 艾希多夫 | 伊爾斯霍芬 | 羅伊特 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 |
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | 鈉 | ||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | |||||||||||||||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | |||||||||||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | ||||||||||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 黑馬戈爾 | |||||||||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 黑馬戈爾 | 艾希多夫 | ||||||||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 黑馬戈爾 | 艾希多夫 | 伊爾斯霍芬 | |||||||||||||||
| 奧格斯堡 | 泰爾夫斯 | 奧格斯堡 | 泰爾夫斯 | 洛芬根 | 托特穆斯 | 雷姆塞克 | 海爾布隆 | 奧特斯維爾 | 英斯特 | 費爾德基興 | 維也納 | 黑馬戈爾 | 艾希多夫 | 伊爾斯霍芬 |
我想從這個表中得到不同的現有路線的數量,即相同停靠城市不重復的路線數量。例如,在這種情況下,它將是 11(因為一行沒有任何與起點/目的地不同的城市)。我想建立一個這樣的表:
| 起源 | 目的地 | 路線數 |
|---|---|---|
| 奧格斯堡 | 泰爾夫斯 | 11 |
任何想法或解決方案?
重現資料框:https ://drive.google.com/file/d/1nFLb0yCP24lcbFqqYRt5bq6yttjQNxGh/view?usp=sharing
uj5u.com熱心網友回復:
這是一種潛在的解決方案,列名為"origin"and "destination":
def get_start_and_end(row):
return row[row.last_valid_index()]
def get_number_of_unique_routes_by_group(group):
return len(group.apply(get_start_and_end, axis=1).unique())
df.groupby(["origin", "destination"]).apply(get_number_of_unique_routes_by_group)
輸出:
origin destination
Augsburg Telfs 13
dtype: int64
您的示例資料框僅包含一個這樣的組,但如果您有其他起點-終點分組,它們也會顯示在輸出中。
uj5u.com熱心網友回復:
IIUC:這是一個標識有 13 條唯一路線而不是 11 條的代碼。
import pandas as pd
df = pd.read_clipboard()
df = df[[x for x in df.columns if not 'Unnamed' in x]]
df = df.assign(hash=df.apply(lambda x: hash("".join(x.fillna("")[1:])), axis=1))
df.groupby(["origin", "destination", "hash"])["city"].count().count()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/453069.html
