【问题标题】:Combine text of a column in dataframe with conditions in pandas/python将数据框中列的文本与 pandas/python 中的条件相结合
【发布时间】:2019-06-24 06:43:05
【问题描述】:

我正在测试一个机器学习模型,需要合并我的文本以剪切我的音频文件并训练模型。如何使用条件合并文本?

我的目标是合并“文本”列中的文本,直到我到达一个结束标点以形成一个句子。我想继续形成句子,直到到达文本文件的末尾。

我尝试过使用 pandas groupby。

df.groupby(['Name','Speaker','StTime','EnTime'])['Text'].apply(' '.join).reset_index()


Example:

Name  Speaker StTime    Text              EnTime
s1     tom     6.8     I would say  7.3
s1     tom     7.3                      7.6
s1     tom     7.6     leap frog    8.3
s1     tom     8.3                      9.2
s1     tom     9.2       a pig.         10.1




Name  Speaker StTime     Text                            EnTime
s1     tom     6.8     I would say leap frog a pig.       10.1

【问题讨论】:

  • df.groupby(['Name','Speaker'])['Text'].apply(' '.join).reset_index() ,从 groupby 中删除另外 2 个 cols
  • Text 列中没有值是NaNs ?还是空字符串?
  • @jezrael 没有值的文本列是空字符串。
  • 好的,每个 Name 和 Speaker 列只有一个句子吗?还是可能有多个?
  • @jezrael 每个名称和说话者列总是一个句子。

标签: python pandas pandas-groupby data-cleaning data-processing


【解决方案1】:

或使用:

>>> df['Text'] = df.groupby(['Name', 'Speaker'])['Text'].transform(' '.join).str.split().str.join(' ')
>>> df2 = df.head(1)
>>> df2['EnTime'] = df['EnTime'].iloc[-1]
>>> df2
  Name Speaker  StTime                          Text  EnTime
0   s1     tom     6.8  I would say leap frog a pig.    10.1
>>> 

【讨论】:

    【解决方案2】:

    使用 GroupBy.agg 并添加函数 GroupBy.firstGroupBy.last 并且对于列 Text 使用自定义 lambda 函数并过滤掉空字符串:

    df1 = (df.groupby(['Name','Speaker'], sort=False)
             .agg({'StTime':'first', 
                   'Text': lambda x: ' '.join(y for y in x if y != ''),
                   'EnTime':'last'})
             .reset_index())
    print (df1)
      Name Speaker  StTime                          Text  EnTime
    0   s1     tom     6.8  I would say leap frog a pig.    10.1
    

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 1970-01-01
      • 2018-10-07
      • 2021-03-09
      • 2021-10-31
      • 2018-09-01
      • 2021-11-11
      • 2021-12-15
      • 2022-01-21
      相关资源
      最近更新 更多