Pandas 替换数据帧中的单词?

Pandas 替换数据帧中的单词?,pandas,dataframe,Pandas,Dataframe,我的数据帧内容 comment 0 abg ko metedarah duit rakyat nak buat belanja ... 1 tutup tv n radio jgn dngar janji bajet 2 dr ta... 2 ya lah ko dah dera rakyat bajet besar untuk ra... 3 oiii kerjaan bn ko org sdr x dh lh kerajaan xd... 4 bertambah

我的数据帧内容

    comment
0   abg ko metedarah duit rakyat nak buat belanja ...
1   tutup tv n radio jgn dngar janji bajet 2 dr ta...
2   ya lah ko dah dera rakyat bajet besar untuk ra...
3   oiii kerjaan bn ko org sdr x dh lh kerajaan xd...
4   bertambah lg hutang negara diambil oleh tangan...
要替换为文件中的列表

    word    correction
0   abg     abang
1   n       dan
2   dr      dari
3   ko      kau
4   org     orang

有什么可能的方法吗?

有可能更好的解决方案,但这里有一些肮脏的东西,可以起作用:

comments = ["abg ko metedarah duit rakyat nak buat belanja",
"tutup tv n radio jgn dngar janji bajet 2 dr ta",
"ya lah ko dah dera rakyat bajet besar untuk ra",
"oiii kerjaan bn ko org sdr x dh lh kerajaan xd",
"bertambah lg hutang negara diambil oleh tangan"]

corrections  =
{"abg"  :   "abang",
"n"   :    "dan",
"dr" :      "dari",
"ko"  :     "kau",
"org"  :    "orang",
 }

data = pd.DataFrame(comments)
data.columns = ["comment"]

def correct(w,corrections):
    c =corrections.get(w)
    return c if c else w

def make_corrections(sent,corrections):
    return " ".join((correct(w, corrections) for w in sent.split()))

data.apply(lambda x: make_corrections(x.comment, corrections),axis=1)

代码循环遍历每个单词,如果存在,则替换为更正。这在语料库的长度上需要时间。

可以考虑在“大熊猫”中使用正则表达式使用<代码> STR.REST()/<代码>方法来更改Word边界中发现的单词的实例(<代码> \b/COD>),然后用更正替换:

>>> data

                                          comment
0   abg ko metedarah duit rakyat nak buat belanja
1  tutup tv n radio jgn dngar janji bajet 2 dr ta
2  ya lah ko dah dera rakyat bajet besar untuk ra
3  oiii kerjaan bn ko org sdr x dh lh kerajaan xd
4  bertambah lg hutang negara diambil oleh tangan

>>> correction_df

  word correction
0  abg      abang
1    n        dan
2   dr       dari
3   ko        kau
4  org      orang

for word, correction in correction_df.itertuples(index=False,name=None):
    data.comment = data.comment.str.replace(r'\b{0}\b'.format(word),correction)

>>> data

                     comment
0    abang kau metedarah duit rakyat nak buat belanja
1  tutup tv dan radio jgn dngar janji bajet 2 dari ta
2     ya lah kau dah dera rakyat bajet besar untuk ra
3   oiii kerjaan bn kau orang sdr x dh lh kerajaan xd
4      bertambah lg hutang negara diambil oleh tangan

非常感谢@PutonSpecacles。伟大的该功能运行良好。我试图引用csv文件数据帧中的注释和更正。有什么建议吗?谢谢兄弟!很高兴这有帮助。那么你的更正是在数据框中,而不是在字典中?是的。卡梅尔也给出了解决方案。基本上这两种方法都有效!再次感谢@putonspectacles。为什么一开始就在数据帧中?@acushner谢谢你的提问。它指的是我的csv文件,有3列,2000行,我已经简化了。谢谢。我问这个问题的原因是,一个只有一列字符串的数据帧实际上不应该是一个数据帧,而应该只是一个列表或数组,但如果有其他相关列,那么这可能是有意义的。非常感谢@khammel,解决方案很有效!我把csv文件中的两个都读作dataframe,并使用您的建议进行替换。你太棒了!