import pandas as pd
df = pd.DataFrame({
'Route': pd.Categorical(["ChicagoVenice", "MiamiAtlanta", "BirminghamLondon", "BostonRome"]),
'City1': pd.Categorical(["Venice", "Miami", "London", "Boston"]),
})
Route City1
0 ChicagoVenice Venice
1 MiamiAtlanta Miami
2 BirminghamLondon London
3 BostonRome Boston
Я хотел бы вычислить другой столбец City2, который сравнивает Route с City1 и извлекает оставшуюся строку.
Route City1 City2
0 ChicagoVenice Venice Chicago
1 MiamiAtlanta Miami Atlanta
2 BirminghamLondon London Birmingham
3 BostonRome Boston Rome
Я думал об использовании string.split () с numpy .vectorize (), но я не мог понять, как правильно применить это к 2 столбцам.
def get_city2(route, city1):
route_split = route.split(city1)
city2 = ''.join(route_split).split()[0]
return city2
df['City2'] = np.vectorize(get_city2)(df['Route'], df['City1'])[1]
Мой результат не совсем то, что я хочу: - (
Route City1 City2
0 ChicagoVenice Venice Atlanta
1 MiamiAtlanta Miami Atlanta
2 BirminghamLondon London Atlanta
3 BostonRome Boston Atlanta
Есть ли у кого-нибудь идеи, как решить эту проблему без цикла? Я бы предпочел аккуратное векторизованное решение, если это возможно.
Спасибо!