如何从数据框的一列中删除标点符号?
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'] = 。
这是不同的,因为它直接应用于原始数据帧,而不是它的一部分。
我正在尝试使用以下代码从“文本”列中删除标点符号:
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'] = 。 这是不同的,因为它直接应用于原始数据帧,而不是它的一部分。