python - 清洁 Pandas 列的最佳方法

标签 python pandas dataframe replace apply

我一直在尝试从数据集中清理特定列。我多次使用 .apply() 函数以便抛出任何可能出现在列的字符串值中的符号

对于每个符号,函数如下:.apply(lambda x: x.replace("", ""))

虽然我的代码可以工作,但它很长而且不太干净。我想知道是否有更短和/或更好的方法来清洁色谱柱。

这是我的代码:

df_reviews = pd.read_csv("reviews.csv")
df_reviews = df_reviews.rename(columns={"Unnamed: 0" : "index", "0" : "Name"})
df_reviews['name'] = df_reviews["Name"].str.split(':', expand=True)[0]


df_reviews['name'] = df_reviews['name'].apply(lambda x: x.replace("Review", "")).apply(lambda x: x.replace(":", "")).apply(lambda x: x.replace("'", "")).apply(lambda x: x.replace('"', "")).apply(lambda x: x.replace("#", ""))\
                                .apply(lambda x: x.replace("{", "")).apply(lambda x: x.replace("}", "")).apply(lambda x: x.replace("_", "")).apply(lambda x: x.replace(":", ""))



df_reviews['name'] = df_reviews['name'].str.strip()

如您所见,许多 .apply() 函数使得很难清楚地看到从“name”列中删除的内容。

有人可以帮助我吗?

亲切的问候

最佳答案

您还可以使用正则表达式:

df_reviews['name'] = df_reviews['name'].str.replace('Review|[:\'"#{}_]', "", regex=True)


正则表达式模式:

'Review|[:\'"#{}_]'
  • 评论:替换“评论”一词
  • |:
  • [:\'"#{}_] - 方括号内的任意字符 []


注意:

如果您想删除所有标点符号:您可以使用它

import string

df_reviews['name'] = df_reviews['name'].str.replace(f'Review|[{string.punctuation}]', "", regex=True)

这将删除以下字符:

!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~

关于python - 清洁 Pandas 列的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75008242/

相关文章:

python - 如何在 Pandas/Numpy 中使用 dateOffset 对日内时间序列数据进行重采样?

python - 返回具有跨列唯一对的行

python - 使用 iterrows() 时的持久化问题

python - curl 请求以恢复 Elasticsearch 中的快照有效,但python中的相同请求不起作用

python - 以编程方式获取当前的 IPython 笔记本单元格输出?

python - 如何限制用户在 Django 中保存数据库?

python - 编辑:pandas multiline value in ipython notebook

python系列在data frame错误中有歧义

scala - 如何将数据框拆分为具有相同列值的数据框?

r - 如何检测数据框列中的异常值?在 R