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) 我可以用更有效的方式编写这段代码吗?
用途:
df = df[df['hour'].isin(Hours)].groupby(['id','hour'])['transaction_type'].agg(', '.join).reset_index()
groupby.agg
:
result = df.groupby(['id', 'hour'])['transaction_type'].agg(', '.join)
或作为列表:
result = df.groupby(['id', 'hour'])['transaction_type'].agg(', '.join).tolist()