Python 如何从对应的字符串列表映射数据帧中的字符串
假设我有一个带有特定列Tweet的数据帧:Python 如何从对应的字符串列表映射数据帧中的字符串,python,string,pandas,replace,mapping,Python,String,Pandas,Replace,Mapping,假设我有一个带有特定列Tweet的数据帧: TWEET ----- kamu ngajak gelut dtnggu kedatangannya dia jadi pampir 还有另一个数据帧B,结构如下: ORIGIN TRANSFORMED ----------------------------- ngajak mengajak dtnggu ditunggu pamir vampir
TWEET
-----
kamu ngajak gelut
dtnggu kedatangannya
dia jadi pampir
还有另一个数据帧B,结构如下:
ORIGIN TRANSFORMED
-----------------------------
ngajak mengajak
dtnggu ditunggu
pamir vampir
有没有一种方法可以将数据帧a的字符串映射到数据帧B,这样每当有字符串匹配时,来自转换列的单词就会根据TWEET列中的ORIGIN列替换相应的字符串?我期望的结果是:
TWEET
-----
kamu mengajak gelut
ditunggu kedatangannya
dia jadi vampir
谢谢你的帮助。谢谢。假设
原点
列具有唯一值
在[88]中:bstr=r''
…:原点变换
…:ngajak mengajak
…:dtnggu ditunggu
…:帕米尔吸血鬼“
在[89]中:astr=r''
…:推特
…:卡木·恩加加格鲁特
…:dtnggu Kedatatanganya
…:dia jadi pampir“
在[90]中:dfa=pd.read_表(io.StringIO(astr),sep='\\n',engine='python')
在[91]中:dfb=pd.read_表(io.StringIO(bstr),sep='\\s+')
在[92]中:定义替换(字、查找、搜索列、反列):
…:match=lookup\u df[search\u col]==word
…:如果匹配.any():
…:返回查找\u df[match][ans\u col]。值[0]
…:其他:
…:返回字
...:
在[93]中:dfa['TWEETS']=dfa['TWEETS'].apply(lambda行:'').join([replace(word,dfb,'ORIGIN','TRANSFORMED')表示行中的单词。split(''))
In[94]:dfa
出[94]:
推特
0卡姆·蒙加亚克·格卢特
1迪通古克达坦甘尼亚
2直径jadi pampir
这可能会对您有所帮助
我用数据为您的场景创建了两个数据帧
df1:
df2:
代码:
输出:
['kamu mengajak gelut ditunggu kedatangannya dia jadi vampir']
有没有一种方法可以将数据帧a的字符串映射到数据帧B,这样每当有字符串匹配时,来自转换列的单词就会根据TWEET列中的ORIGIN列替换相应的字符串?是的,很有可能。请看。
ORIGIN TRANSFORMED
0 ngajak mengajak
1 dtnggu ditunggu
2 pampir vampir
for or_word in df2['ORIGIN'].values.tolist():
if any(df1['TWEET'].str.contains(or_word)):
transformed_word = df2['TRANSFORMED'].iloc[df2.index[df2['ORIGIN'] == or_word].tolist()[0]]
print(transformed_word)
df1['TWEET'] = df1['TWEET'].str.replace(or_word, transformed_word)
['kamu mengajak gelut ditunggu kedatangannya dia jadi vampir']