【发布时间】:2020-08-07 12:25:24
【问题描述】:
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
有没有人知道如何在不循环的情况下解决这个问题?如果可能的话,我会倾向于一个简洁的矢量化解决方案。
谢谢!
【问题讨论】:
标签: python-3.x pandas string vectorization