Python,Pandas - 将函数应用于数据框中的列以仅替换某些项

时间:2016-09-20 19:45:33

标签: python pandas data-munging

我有一些城市名称的缩写词典,我们的系统(出于某种原因)适用于数据(即“堪萨斯城”缩写为“Kansas CY”,俄克拉荷马城拼写正确)。

我在将函数应用于数据框的列时遇到问题,但是当我传入数据字符串时它会起作用。代码示例如下:

def multiple_replace(text, dict):
  # Create a regular expression  from the dictionary keys
  regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))

  # For each match, look-up corresponding value in dictionary
  return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)

testDict = {"Kansas CY": "Kansas City"}

dfData['PREV_CITY'] = dfData['PREV_CITY'].apply(multiple_replace, dict=testDict)

当我将'axis = 1'添加到最后一行时,它错误地说我提供了太多的args。否则,它运行时没有错误,只是在与字典匹配时不进行更改。

提前谢谢! -Reece

1 个答案:

答案 0 :(得分:2)

您可以使用map并传递一个字典来替换dict键与dict键的完全匹配,因为您可能会区分大小写匹配我首先lower所有字符串比赛前:

dfData['PREV_CITY'] = dfData['PREV_CITY'].str.lower().map(testDict, na_action='ignore')

这假设你的词典中的键也是小写