Pandas 数据框按 ID 合并文本行组

Par*_*rag 5 merge text-mining excel-formula python-3.x pandas-groupby

我有一个数据框如下:

ID    Date          Text  
1     01/01/2019    abcd
1     01/01/2019    pqrs
2     01/02/2019    abcd
2     01/02/2019    xyze
Run Code Online (Sandbox Code Playgroud)

我想合并Text通过ID使用Python中group by子句。

我想Text通过分组合并 ' ' 列ID

ID    Date        Text
1     01/01/2019  abcdpqrs
2     01/02/2019  abcdxyze
Run Code Online (Sandbox Code Playgroud)

我想在 Python 中做到这一点。

我尝试了以下代码块,但没有奏效:

  1. groups = groupby(dataset_new, key=ID(1))

  2. dataset_new.group_by{row['Reference']}.values.each do |group| puts [group.first['Reference'], group.map{|r| r['Text']} * ' '] * ' | ' end

我还尝试使用公式合并 excel 中的文本,但它也没有给出所需的结果。

Wol*_*ngK 3

尝试groupbysum。从您的错误消息和输出来看,df.info()似乎有混合的 dtypes 和NaNin column Text。我建议NaN使用 转换为空字符串fillna(''),然后使用 将该列中的所有元素转换为字符串astype(str)

df = pd.DataFrame({'ID': [1,1,2,2], 
                   'Date': ['01/01/2019', '01/01/2019', '01/02/2019', '01/02/2019'],
                   'Text': ['abcd', 'pqrs', 'abcd', 'xyze']})

df['Text'] = df['Text'].fillna('').astype(str)
df_grouped = df.groupby(['ID', 'Date'])['Text'].sum()
print(df_grouped)
Run Code Online (Sandbox Code Playgroud)

这应该返回

ID  Date      
1   01/01/2019    abcdpqrs
2   01/02/2019    abcdxyze
Run Code Online (Sandbox Code Playgroud)