gpt4 book ai didi

python - PySpark:根据与另一列中的字符串匹配的字典值创建新列

转载 作者:行者123 更新时间:2023-12-05 04:27:58 24 4
gpt4 key购买 nike

我有一个如下所示的数据框 A:

<表类="s-表"><头>身份证SOME_CODE标题<正文>1024df3纽约纽约大花园20ffw34密歇根州底特律阴暗的小房子393na09美丽的迈阿密红毯48339ct加利福尼亚州洛杉矶的摩天大楼584p3k9马萨诸塞州波士顿北部的大商店

我还有另一个数据框 B:

<表类="s-表"><头>城市捷径<正文>洛杉矶洛杉矶纽约纽约迈阿密我波士顿B底特律DTW

我想向数据框 A 添加新的“SHORTCUT”列,因为 A 中的“标题”列包含数据框 B 中“城市”列中的城市。我曾尝试将数据框 B 用作字典并将其映射到数据框 A,但我无法克服城市名称位于句子中间的事实。

期望的输出是:

<表类="s-表"><头>身份证SOME_CODE标题捷径<正文>1024df3纽约纽约大花园纽约20ffw34密歇根州底特律阴暗的小房子DTW393na09美丽的佛罗里达州迈阿密红地毯我48339ct加利福尼亚州洛杉矶的摩天大楼洛杉矶584p3k9马萨诸塞州波士顿北部的大商店B

我会感谢你的帮助。

最佳答案

您可以利用 pandas.apply功能看看这是否有帮助:

import numpy as np
import pandas as pd

data1={'id':range(5),'some_code':["024df3","0ffw34","93na09","8339ct","84p3k9"],'title':["Large garden in New York, New York","Small house in dark Detroit, Michigan","Red carpet in beautiful Miami","Skyscraper in Los Angeles, California","Big shop in northern Boston, Massachusetts"]}
df1=pd.DataFrame(data=data1)

data2={'city':["Los Angeles","New York","Miami","Boston","Detroit"],"shortcut":["LA","NYC","MI","BO","DTW"]}
df2=pd.DataFrame(data=data2)

# Creating a list of cities.
cities=list(df2['city'].values)

def matcher(x):
for index,city in enumerate(cities):
if x.lower().find(city.lower())!=-1:
return df2.iloc[index]["shortcut"]
return np.nan

df1['shortcut']=df1['title'].apply(matcher)
print(df1.head())

这将生成以下 o/p:

   id some_code                                       title shortcut
0 0 024df3 Large garden in New York, New York NYC
1 1 0ffw34 Small house in dark Detroit, Michigan DTW
2 2 93na09 Red carpet in beautiful Miami MI
3 3 8339ct Skyscraper in Los Angeles, California LA
4 4 84p3k9 Big shop in northern Boston, Massachusetts BO

关于python - PySpark:根据与另一列中的字符串匹配的字典值创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72719335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com