Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何转换数据框中的文本(删除标点符号,将文本拆分为每个条目一个单词)_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何转换数据框中的文本(删除标点符号,将文本拆分为每个条目一个单词)

Python 如何转换数据框中的文本(删除标点符号,将文本拆分为每个条目一个单词),python,pandas,dataframe,Python,Pandas,Dataframe,我正在清理.txt源中的数据。该文件的每一行都包含WhatsApp消息,包括日期和时间戳。我已经将所有这些拆分为一列,其中一列保存数据和时间信息df['text],另一列保存所有文本数据df['text_new']。基于此,我想创建一个。这就是为什么我需要将几个对话中的每个单词作为单独的数据框条目中的单个条目 我需要你的帮助来进一步清理和转换这些数据 假设数据帧列df['text_new']如下所示: 0 How are you? 1 I am fine, we should me

我正在清理.txt源中的数据。该文件的每一行都包含WhatsApp消息,包括日期和时间戳。我已经将所有这些拆分为一列,其中一列保存数据和时间信息df['text],另一列保存所有文本数据df['text_new']。基于此,我想创建一个。这就是为什么我需要将几个对话中的每个单词作为单独的数据框条目中的单个条目

我需要你的帮助来进一步清理和转换这些数据

假设数据帧列df['text_new']如下所示:

0    How are you? 
1    I am fine, we should meet this afternoon!
2    Okay let us do that. Use:

import re

#https://stackoverflow.com/a/49146722
emoji_pattern = re.compile("["
                       u"\U0001F600-\U0001F64F"  # emoticons
                       u"\U0001F300-\U0001F5FF"  # symbols & pictographs
                       u"\U0001F680-\U0001F6FF"  # transport & map symbols
                       u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
                       u"\U00002702-\U000027B0"
                       u"\U000024C2-\U0001F251"
                       "]+", flags=re.UNICODE)

df['new'] = (df['text_new'].str.lower() #lowercase
                           .str.replace(r'[^\w\s]+', '') #rem punctuation 
                           .str.replace(emoji_pattern, '') #rem emoji
                           .str.strip() #rem trailing whitespaces
                           .str.split()) #split by whitespaces
0你好吗?
我很好,我们今天下午应该见面!
2好的,让我们这样做 使用:

样本

df=pd.DataFrame({'text_new':['How'you?',
“我很好,我们今天下午应该见面!”,
'好的,让我们这样做。\U0001f602']})
表情符号模式=重新编译(“[”
u“\U0001F600-\U0001F64F”#表情符号
u“\U0001F300-\U0001F5FF”#符号和象形文字
u“\U0001F680-\U0001F6FF”#运输和地图符号
u“\U0001F1E0-\U0001F1FF”标志(iOS)
u“\U00002702-\U000027B0”
u“\U000024C2-\U0001F251”
“]+”,标志=re.UNICODE)
进口稀土
df['new']=(df['text_new'].str.lower()
.str.replace(r'[^\w\s]+','')
.str.replace(表情符号模式“”)
.str.strip()
.str.split())
打印(df)
新文本\
你好吗?
我很好,我们今天下午应该见面!
2好的,让我们这样做 使用:

样本

df=pd.DataFrame({'text_new':['How'you?',
“我很好,我们今天下午应该见面!”,
'好的,让我们这样做。\U0001f602']})
表情符号模式=重新编译(“[”
u“\U0001F600-\U0001F64F”#表情符号
u“\U0001F300-\U0001F5FF”#符号和象形文字
u“\U0001F680-\U0001F6FF”#运输和地图符号
u“\U0001F1E0-\U0001F1FF”标志(iOS)
u“\U00002702-\U000027B0”
u“\U000024C2-\U0001F251”
“]+”,标志=re.UNICODE)
进口稀土
df['new']=(df['text_new'].str.lower()
.str.replace(r'[^\w\s]+','')
.str.replace(表情符号模式“”)
.str.strip()
.str.split())
打印(df)
新文本\
你好吗?
我很好,我们今天下午应该见面!


2好的,让我们这样做。您需要
df.text\u new.str.lower()
。谢谢您解决这个问题。我得到的错误是“传递的项目数量错误2,位置意味着8362”。这可能是因为笑脸以及为什么我想在将所有文本转换成小写之前拆分文本。如果微笑是导致此错误的原因。我还需要一个提示来清理它们。@jpp谢谢,我编辑了我的问题。然而,我主要关心的是所有其他问题,而不是文本的小写。这是我关于清洁的四个问题之一的答案。你能重新回答我的问题吗?@jezrael谢谢你的帮助。我最大的问题是在获取所有文本小写之前的其他3个步骤。您需要
df.text\u new.str.lower()
。谢谢您解决这个问题。我得到的错误是“传递的项目数量错误2,位置意味着8362”。这可能是因为笑脸以及为什么我想在将所有文本转换成小写之前拆分文本。如果微笑是导致此错误的原因。我还需要一个提示来清理它们。@jpp谢谢,我编辑了我的问题。然而,我主要关心的是所有其他问题,而不是文本的小写。这是我关于清洁的四个问题之一的答案。你能重新回答我的问题吗?@jezrael谢谢你的帮助。我最大的问题是在获取所有文本小写之前的其他3个步骤。谢谢,这可能非常接近我所需要的。我现在得到了这样的错误:缩进错误:未定义意外缩进和“re”可能有办法从文本中删除所有表情?好吧,它部分工作,但现在每个条目都像这样:[睡眠,好吧!][我们,应该,明天见面?]所以点和表情消失了(太好了!),但是文本stil包含常规消息中的逗号,在我们运行此评论之前必须删除这些消息:“.str.replace(r'[^\w\s]+','')#rem标点符号”。我怎么能这么做?好吧,我刚看到你的编辑!我的东西看起来不错。我们如何将句子中的单词拆分为每个数据框条目中的一个单词?这是我的目标,也是完全解决我的问题所缺少的最后一件事!到目前为止非常感谢!!所以我需要对数组中的每一个单词进行转换,即数组中的[how,are,you],[okay,let,us,do,that],数组中只包含单个单词的列表:how,are,you,okay,let,us,do,每个单词都应该放在一个新条目中,并用括号括起来。也许这是澄清它需要什么。提前谢谢你@Mike_H-S需要删除
.str.split()
?或者需要一个包含所有句子中所有单词的大列表,比如
s=(df['text\u new'].str.lower().str.replace(r'[^\w\s]+','').str.replace(emoji\u模式,).str.strip().str.split())
L=[y代表x,s代表y代表y代表x]
?谢谢,这可能非常接近我的需要。我现在得到了以下错误:IndentationError: