迭代数据框中的 2 列以连接另一列值

问题描述 投票:0回答:2
Hours=['24', '23', '22', '21', '20', '19', '18','17', '16', '15', '14', '13', '12', '11','10', '09', '08', '07', '06', '05', '04','03', '02', '01', '00']
    result=[]
    unique_id = df['id'].unique()

    for i in unique_id:
        for j in Hours:
            filtered_data = df[(df['id'] == i) & (df['hour']==j)]
            if not filtered_data.empty:
                concatenated_names = ', '.join(filtered_data['transaction_type'])
                result.append(concatenated_names)

数据包含三列 Id hour 和 transaction_type ,用于说明何时发生哪种类型的交易。 我希望交易列同时连接 即,如果事务 A 发生在 12 小时,B 也发生在 12 小时,那么结果应该是 (A, B) 我可以用更有效的方式编写这段代码吗?

pandas dataframe concatenation iteration multiple-columns
2个回答
0
投票

用途:

df = df[df['hour'].isin(Hours)].groupby(['id','hour'])['transaction_type'].agg(', '.join).reset_index()

0
投票

您可以使用简单的

groupby.agg

result = df.groupby(['id', 'hour'])['transaction_type'].agg(', '.join)

或作为列表:

result = df.groupby(['id', 'hour'])['transaction_type'].agg(', '.join).tolist()
© www.soinside.com 2019 - 2024. All rights reserved.