将多个数据帧合并为一个数据帧

2024-10-02 08:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有6个相同列名的数据帧。 列名为: "session_id", "player_id", "gersey_color","timestamp"

每个帧中的数据如下所示:

^{tb1}$

我想将这些数据帧合并到单个数据帧中,格式如下:

^{tb2}$

在这里,我使用时间戳作为唯一标识符,并希望获得在所有数据帧中发生的每个时间戳的频率,但分类为session_idplayer_id and gersey_color组合

我当前的代码可以获取所有信息,但无法按我想要的方式格式化:

    for i, combo_row in combo_df.iterrows():
       value_in_combo = combo_row['timestamp']
       count = 0

       player_info = []
       session_id = []
       for id, df_path in enumerate(df_list):
           rule_df = pd.read_excel(df_path)
           sub_counter = 0
           for idx, entry in rule_df.iterrows():
               idr = list(rule_df.columns).index('timestamp')
               value = entry[idr]
               s_id = entry[list(rule_df.columns).index('session.id')]
               player_team = entry[list(rule_df.columns).index('gersey_color')]
               player_num = entry[list(rule_df.columns).index('player_id')]
               if value == value_in_combo:
                   sub_counter+=1
                   session_id.append(s_id)
                   player_info.append(str(player_team)+str(player_num))
           combo_df.at[i, f'df{id+1}'] = ','.join(list(set(player_info)))
           combo_df.at[i, 'session_id'] =','.join(list(set(session_id)))
           count += sub_counter
       combo_df.at[i, 'occurrence_across_rules'] = count

这里combo_df是预定义的dfi,用于填充所有数据

当前的combo_df看起来像:

^{tb3}$

。 但正如我所说,我的代码没有生成我想要的格式。 有人能建议怎么做吗

编辑: 我使用以下方法解决了问题: combo_df.set_index(['session_id', 'player_team', 'player_num'], inplace=True)


Tags: columns数据iniddfindexvaluesession

热门问题