如何从数据框的一列中删除标点符号?

How to remove punctuation from one column of a dataframe?

我正在尝试使用以下代码从“文本”列中删除标点符号:

texttweet = pd.read_csv("../input/pfizer-vaccine-tweets/vaccination_tweets.csv")

i = 0
punct = "\n\r"+string.punctuation

for tweet in texttweet['text']:
    texttweet['text'][i] = tweet.translate(str.maketrans('', '', punct))
    i += 1

texttweet

但是我收到了这条消息,尽管我得到了所需的结果:

A value is trying to be set on a copy of a slice from a DataFrame

那么无论消息如何保留我的代码是否可以,还是我应该更改某些内容?

最好的方法是:

texttweet = pd.read_csv("../input/pfizer-vaccine-tweets/vaccination_tweets.csv")
punct = "\n\r"+string.punctuation
texttweet['text'] = texttweet['text'].str.translate(str.maketrans('','',punct))
texttweet

有关您遇到的问题的解释,请参见此处: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy.

基本上 texttweet['text'] 是数据帧的“切片”,您正在获取该切片并尝试在位置 i.

为避免错误,您可以使用 texttweet.loc[i,'text'] = 。 这是不同的,因为它直接应用于原始数据帧,而不是它的一部分。