如何实现DataFrame Left Join后同一cycle_counter对应右侧字段仅显示一次
实现DataFrame左连接后仅显示唯一cycle_counter对应的时间字段
问题背景
已将循环时间表(df_cycletime)左连接到当前数据表(df_current),但total_time和up_time会随每个cycle_counter重复显示。需求是让每个cycle_counter仅在首次出现时展示这两个字段的值,其余重复行留空。
修正后的实现代码
首先修正左连接代码的参数错误(on需传入列名字符串),再通过duplicated()标记重复行并清空对应字段:
# 执行左连接,注意on参数需传入列名字符串 df_merged = df_current.merge(df_cycletime, how='left', on='cycle_counter') # 对重复的cycle_counter行,清空total_time和up_time df_merged.loc[df_merged['cycle_counter'].duplicated(), ['total_time', 'up_time']] = ''
最终结果
| datetime_index | current | speed | cycle_counter | total_time | up_time |
|---|---|---|---|---|---|
| 27-10-2022 08:30:56.3056 | 30 | 60 | 1 | 20 | 6 |
| 27-10-2022 08:30:58.3058 | 30 | 60 | 1 | ||
| 27-10-2022 08:30:59.3059 | 31 | 62 | 1 | ||
| 27-10-2022 08:30:59.3059 | 30 | 60 | 1 | ||
| 27-10-2022 08:31:00.310 | 30.5 | 61 | 2 | 22 | 7 |
| 27-10-2022 08:31:01.311 | 30 | 60 | 2 | ||
| 27-10-2022 08:31:02.312 | 31 | 61 | 2 | ||
| 27-10-2022 08:31:02.312 | 30 | 60 | 3 | 24 | 5 |
| 27-10-2022 08:31:03.313 | 31 | 62 | 3 | ||
| 27-10-2022 08:31:04.314 | 30 | 60 | 3 |
内容的提问来源于stack exchange,提问作者user_v27
相关产品推荐
相关产品推荐

