Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从对应的字符串列表映射数据帧中的字符串_Python_String_Pandas_Replace_Mapping - Fatal编程技术网

Python 如何从对应的字符串列表映射数据帧中的字符串

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的数据帧:

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