【问题标题】:string manipulation with python pandas and replacement function使用 python pandas 和替换函数进行字符串操作
【发布时间】:2020-04-15 12:57:21
【问题描述】:

我正在尝试编写一个代码来检查 csv 文件中的句子并搜索从第二个 csv 文件中给出的单词并替换它们,我的代码如下所示,它不会返回任何错误但它由于某些原因没有替换任何单词,并且在没有替换的情况下打印回相同的句子。


import string
import pandas as pd
text=pd.read_csv("sentences.csv")
change=pd.read_csv("replace.csv")
for row in text:
    print(text.replace(change['word'],change['replacement']))

句子 csv 文件的样子

更改的 csv 文件看起来像

【问题讨论】:

标签: python string pandas replace nltk


【解决方案1】:

试试:

text=pd.read_csv("sentences.csv")
change=pd.read_csv("replace.csv")
toupdate = dict(zip(change.word, change.replacement))
text = text['sentences'].replace(toupdate, regex=True)
print(text)

【讨论】:

  • 谢谢你工作得很好你能解释一下 dict 和 zip 函数他们对这段代码做了什么吗
  • zip 创建一个包含两个列表的可迭代元组,dict 将从元组中创建一个字典作为键、值对
【解决方案2】:

dataframe.replace(x,y) 将完整的 x 更改为 y,而不是 x 的一部分。

你必须使用正则表达式或自定义函数来做你想做的事。例如:

change_dict = dict(zip(change.word,change.replacement))
def replace_word(txt):
    for key,val in change_dict.items():
        txt = txt.replace(key,val)
return txt
print(text['sentences'].apply(replace_word))

【讨论】:

  • 谢谢,我也试过了,但它应该在一个 for 循环中来执行所有句子,因为它只是替换第一句,你能在你的代码的第一行输入 dict 和 zip他们做什么
  • .apply 负责循环,在回答帖子上解释 zip 和 dict
  • 那么您的代码只是为第一次替换而执行并停止
【解决方案3】:

// 创建一个额外的列以避免原始列发生任何变化

text["new_sentence"]=text["sentences"]

for changeInd in change.index:
    for eachTextid in text.index:
        text["new_sentence"][eachTextid]=text["new_sentence"][eachTextid].replace(change['word'][changeInd],change['replacement'][changeInd])

clear code: click here plz

【讨论】:

    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2017-12-18
    • 2022-08-04
    • 2013-06-11
    • 2010-09-10
    相关资源
    最近更新 更多