熊猫数据框-一个单元格内有多个值?

时间:2020-04-12 19:29:29

标签: python pandas

我正在做作业,但是在使用Pandas时遇到了麻烦(发现它与我以前习惯的MATLAB非常不同)。 我有一个名为“ main_DF”的数据框,该数据框具有多个列(或系列),这些列之一称为“文本消息”。我想将每一行的文本消息标记为单个单词,然后将这些单个单词的列表放在另一个称为“文本消息令牌”的列中。 这是我目前所拥有的:

main_DF = pd.DataFrame(columns=['text-message', 'Label']) # creating empty dataframe

# filling with data
main_DF = main_DF.append({'text-message': "I am happy", 'Label':"happy"}, ignore_index=True)
main_DF = main_DF.append({'text-message': "I am sad", 'Label':"sad"}, ignore_index=True)

# print
print(main_DF)

# Tokenizing text-message
tokenize = CountVectorizer().build_tokenizer()

# Add tokenized message to main_DF
main_DF['text-message-tokens'] = tokenize(main_DF['text-message'][0]) # tokenize first row
main_DF['text-message-tokens'] = tokenize(main_DF['text-message'][1]) # tokenize second row

# print
print(main_DF)

这将导致以下结果

enter image description here

我希望最终像这样, enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用apply对每条短信应用标记化:

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

main_DF = pd.DataFrame(columns=['text-message', 'Label']) # creating empty dataframe

# filling with data
main_DF = main_DF.append({'text-message': "I am happy", 'Label':"happy"}, ignore_index=True)
main_DF = main_DF.append({'text-message': "I am sad", 'Label':"sad"}, ignore_index=True)

# print
print(main_DF)

# Tokenizing text-message
tokenize = CountVectorizer().build_tokenizer()

# Add tokenized message to main_DF
main_DF["text-message-tokens"] = main_DF["text-message"].apply(tokenize)

# print
print(main_DF)

输出

main_DF                                                                   
  text-message  Label text-message-tokens
0   I am happy  happy         [am, happy]
1     I am sad    sad           [am, sad]