【问题标题】:Replace words in list by words in dataframe, Python用数据框中的单词替换列表中的单词,Python
【发布时间】:2014-03-11 18:38:48
【问题描述】:

我有一个句子列表,我需要用数据框列中的一个单词替换每个单词。这是一对一的通信。这是我的代码:

def replace_words(x):
    z = [word for line in x for word in line.split()]
    for i in range(0 ,(len(z)-1)):
    z[i] = str.replace(z[i],dataframe[i])
    return z

这最终给出了一个错误 "cant assign to function call" 。数据是这样的:

x = ['I love flappy brd' , 'i got a platium medal','i hammred my fone']  .

现在计算 z,给我:

z = ['I','love','flappy','brd','i','got','a','platium','medal','i','hammred','my','fone']

dataframe 是一个系列(类似对象的表),它有一列,每一行由 1 个单词组成,如下所示:

所以现在我需要用图像中的这些单词(正确的)替换 z 中的单词,即数据帧 .. 我该怎么做?

【问题讨论】:

  • z[i] = z[i].replace() 行中是否需要方括号?
  • 是的,我做到了.. 现在问题出在这个错误上 - “替换需要至少 3 个参数(给定 2 个)”。检查一下,我已经编辑了我的代码..

标签: python for-loop replace pandas dataframe


【解决方案1】:

您使用 str.replace 错误。您应该在字符串上调用它,并指定要替换的子字符串和要替换的新字符串。它的工作原理是这样的:

>>> x = "hello world"
>>> x.replace("hello", "goodbye")
'goodbye world'

至于您的实际程序,从您的描述看来,您实际上想要这样的东西:

def replace_words(x, dataframe):
  z = [word for line in x for word in line.split()]
  for i in range(0, len(z)):
    z[i] = dataframe[i]
  return z

dataframe = ["I", "love", "flappy", "bird", "i", "got", "a", "platinum", "medal", "i", "hammered", "my", "phone"]
x = ['I love flappy brd' , 'i got a platium medal','i hammred my fone']
print "x was: " + str(x)
print "now: " + str(replace_words(x, dataframe))

这将输出:

x was: ['I love flappy brd', 'i got a platium medal', 'i hammred my fone']
now: ['I', 'love', 'flappy', 'bird', 'i', 'got', 'a', 'platinum', 'medal', 'i', 'hammered', 'my', 'phone']

虽然我必须承认,这似乎毫无意义,因为结果与data frame 中的结果完全相同。也许你可以进一步澄清。

【讨论】:

  • 如果你看到,我的数据框由正确的拼写组成。可以看到'brd'变成'bird'等等..非常感谢..
  • 但是单词将被它们在数据框中的位置简单地替换——例如输出中的第四个单词将变为“bird”,无论它是什么开头。这就是你想要的吗?
  • 这种方法是错误的并且不可靠。我后来意识到了。我会编辑我的问题..
猜你喜欢
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 2012-11-26
相关资源
最近更新 更多