【问题标题】:how to merge multiple row into single one considering the label考虑到标签,如何将多行合并为单行
【发布时间】:2021-02-09 15:02:49
【问题描述】:

我有一个数据框,每一行都包含一个句子。

我想把里面的行合并在一起,这样每一行就包含了每个作者的4句话。

我有类似这样的数据框:

text:           author
sent1             x
sent2             x   
sent3             x  
..
sent1002          x 
sent1             y
sent2             y
sent3             y
..
sent2598          y
sent1             z
sent2             z
sent3             z
..
sent3698          z

我想把它转换成这样的东西:

text                                 author
setn1,sent2,sent3,sent4                 x
..
sent1000,sent1001,sent1002,sent1003     y
sent1,sent2,sent3,sent4                 z

【问题讨论】:

  • 嗨,玛丽,请提供一段代码,我们可以运行它来生成您的输入示例,以及一段代码来为该输入生成您想要的输出。
  • @ibarrond 感谢您的回答... print df.groupby('author')['text'].apply(','.join).reset_index() 我是这样写的。 ..但它将所有发送的内容连接在一起...我只想为每行制作4个句子,而不是一个作者的所有句子...
  • 有几种方法可以做到这一点。一种简单的方法是首先根据第二列“排序”列表。因此,同一作者的数据在彼此之下。使用 for 循环:for i in range (0,len(df)): if df[i,1]==df[i+1,1]: 将第一列添加到一起。然后删除 i+1 行。希望有帮助
  • 这个操作背后的逻辑是什么?
  • 我想从文本中获得一些文体特征,但我无法从样本中的一个句子中得到好的结果,建议将每个样本转换为多句块@Manakin

标签: python pandas dataframe


【解决方案1】:

用途:

#sample data
print (df)
        text author
0      sent1      x
1      sent2      x
2      sent3      x
3   sent1002      x
4      sent1      x
5      sent2      x
6      sent3      x
7   sent2598      y
8      sent1      y
9      sent2      y
10     sent3      y
11  sent3698      y

因为需要按每 4 个句子聚合,使用 GroupBy.cumcount 的计数器并通过 join 传递给另一个 groupby

g = df.groupby('author').cumcount() // 4

df1 = (df.groupby(['author', g])['text']
        .agg(','.join)
        .reset_index(level=1, drop=True)
        .reset_index(name='text4'))
print (df1)
  author                       text4
0      x  sent1,sent2,sent3,sent1002
1      x           sent1,sent2,sent3
2      y  sent2598,sent1,sent2,sent3
3      y                    sent3698

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多