查找并替换Python

2024-10-03 19:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理熊猫和一个相当大的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')

Tags: csv字符串文档目标code字符excelloc
2条回答

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

要获得所需的结果,可以使用map,将函数应用于序列中的每个元素(数据帧中的单个列是该序列的一部分),并将其组合到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

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

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

相关问题 更多 >