【问题标题】:Find and Replace Python查找和替换 Python
【发布时间】:2020-06-16 06:39:52
【问题描述】:

我正在使用 pandas 和一个相当大的 excel 文档。我的目标是查找和替换字符串中的特定字符并将它们替换为空,实质上是删除字符。字符串位于特定列中。下面你将看到我创建的用于查找和替换的代码,但是 python 没有给我一条错误消息,当我检查保存的文件时,没有任何改变。我做错了什么?

import pandas as pd

df1 = pd.read_csv('2020.csv')

(df1.loc[(df1['SKU Code'].str.contains ('-DG'))])

dfDGremoved = (df1.loc[(df1['SKU Code'].str.contains('-DG'))].replace('-DG',''))

dfDGremoved.to_csv('2020DRAFT.csv')

【问题讨论】:

  • 为什么要检查字符串是否包含您要替换的内容。只需先更换它。这不起作用:df1['SKU Code'] = df1['SKU Code'].replace('-DG', '')。然后只是df1.to_csv('2020DRAFT.csv')
  • (df1.loc[(df1['SKU Code'].str.contains ('-DG'))]) 行没有任何作用。

标签: python pandas replace find


【解决方案1】:

您的代码有点过度设计,Python 的replace 方法会忽略不包含您要替换的子字符串的字符串,因此无需调用contains。也不需要创建第二个数据框,pandas 可以处理就地替换。

要达到您想要的结果,您可以使用map,它将一个函数应用于系列中的每个元素(DataFrame 中的单个列),并结合到lambda function

df1 = pd.read_csv('2020.csv')
df1['SKU Code'] = df1['SKU Code'].map(lambda x: x.replace('-DG', '')
df1.to_csv('2020DRAFT.csv')

解压一下:

df1['SKU Code'] = df1['SKU Code'].map(lambda x: x.replace('-DG', '')
  |                     |          |         └─ Create a nameless function which 
  |                     |          |            takes a string and removes '-DG'
  |                     |          |            from it 
  |                     |          |
  |                     |          └─ ...and run this function on every element...
  |                     |
  |                     └─ ... of the 'SKU Code' column in df1...
  |
  └── ... Then store the results in that same column

【讨论】:

    【解决方案2】:

    您可以使用pandas.Series.str.replace()。它执行正则表达式替换。

    dfDGremoved = df1.copy()
    dfDGremoved['SKU Code'] = dfDGremoved['SKU Code'].str.replace('-DG','')
    dfDGremoved.to_csv('2020DRAFT.csv')
    

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2022-07-13
      • 2010-11-16
      相关资源
      最近更新 更多