【问题标题】:How to split words in a row to create new rows in a DataFrame?如何在一行中拆分单词以在 DataFrame 中创建新行?
【发布时间】:2021-02-11 16:33:32
【问题描述】:

我有一个包含两列的数据集,一列是情绪,另一列是代表这些情绪的文本,即句子。我想在这些句子中进行拆分,然后使用这些句子的情绪创建新行,但要单独为每个元素/单词创建新行

df = pd.DataFrame({
    'emotion': ['joy', 'fear', 'sadness'],
    'text': ['falling love', 'involved traffic accident', 'lost person']
})

df_result = pd.DataFrame({
    'emotion': ['joy', 'joy', 'fear', 'fear', 'fear', 'fear' 'sadness', 'sadness', 'sadness'],
    'text': ['falling', 'love', 'involved', 'traffic', 'accident', 'lost', 'person', 'meant']
})

我尝试了什么?

save = pd.DataFrame(columns=['emotion', 'text'])
d = {}
for idx, row in df.iterrows():
    row_lst = (row['text']).split()
    for word in row_lst:
        word_lst = [word]
        d[row['emotion']] = word_lst
        print(d)
save.append(d)

我检查了相关的重复问题,并不是同一个问题。因此,不是重复的,一个请求列,这个请求行。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    请尝试

    df=df.assign(text=df['text'].str.split('\s')).explode('text')
    

    【讨论】:

    • split('\s') 几乎总是错误的,因为如果有多个空格分隔符,它会创建空字符串。使用split('\s+') 或简单的split()
    猜你喜欢
    • 2021-09-20
    • 2018-09-04
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多