首页 > 解决方案 > 如何从对应的字符串列表映射数据框中的字符串

问题描述

假设我有这个带有特定列 Tweet 的数据框 A:

TWEET
-----
kamu ngajak gelut
dtnggu kedatangannya
dia jadi pampir

还有另一个数据框 B,结构如下:

ORIGIN            TRANSFORMED 
-----------------------------
ngajak             mengajak
dtnggu             ditunggu
pamir              vampir

有没有办法将数据框 A 的字符串映射到数据框 B,所以只要有字符串匹配,来自 TRANSFORMED 列的单词将根据 TWEET 列中的 ORIGIN 列替换相应的字符串?我想要的结果:

TWEET
-----
kamu mengajak gelut
ditunggu kedatangannya
dia jadi vampir

任何帮助表示赞赏。谢谢你。

标签: pythonstringpandasreplacemapping

解决方案


这可能会对您有所帮助。

我用你的数据为你的场景创建了两个数据框。

df1:

data = '''kamu ngajak gelut dtnggu kedatangannya dia jadi pampir'''
df1 = pd.DataFrame({'TWEET': [data]})

df2:

   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']

推荐阅读