熊猫-如何根据其他列中的条件对一列中的句子求和,并将结果文档存储在列表中

时间:2019-07-11 13:32:31

标签: python pandas dataframe

我想创建一个文档列表。当“公司”和“日期”相同时,每个文档都是“文本”列中的组合语句。

为了说明,我有一个数据框:

df = pd.DataFrame(np.array([['28/02/2017', 'Apple', "A"], ['28/02/2017', 'Apple', "B"], ['30/03/2017', 'Apple', "C"],
                            ['30/03/2017', 'Apple', "D"],  ['30/02/2017', 'Amazon', "E"]]),
                columns=['date', 'company', 'text'])

我想要的输出是带有以下句子的列表:

documents = ["AB", "CD", "E"]

到目前为止,我考虑过创建一个“组”列,该列将为公司和日期组合分配一个组号。根据组号,我可以对文本求和。

我尝试创建一个分配这些组号的函数:

def label_groups(x, count):
    if x['date'] == x['company']:
        return count
    else:
        count = count+1

df['group'] = df.apply(lambda x: label_groups(x, 0), axis=1)

但是这行不通(每行返回“ None”)。

也许这是一个不必要的复杂方法,并且有一种更简单的方法来实现所需的输出?

1 个答案:

答案 0 :(得分:1)

您可以同时groupby的两列并与join进行汇总:

l = df.groupby(['date', 'company'], sort=False).text.agg(''.join).values.tolist()

print(l)
# ['AB', 'E', 'CD']