如何在Pandas/Python中将设备条码分组到对应房间ID下
解决方案
根据你的数据特征(房间ID条码以XY开头,设备条码以Z开头),可以通过以下Pandas步骤实现设备与所属房间的关联:
1. 读取数据并定义列名
原始文件无表头,读取时直接指定列名方便后续操作:
import pandas as pd # 替换为你的txt文件路径 df = pd.read_csv('barcode_data.txt', header=None, names=['Date', 'Time', 'Extra', 'Code'])
2. 标记并填充所属房间ID
新增Room ID列,仅在当前行是房间ID时填入值,其余行用向前填充继承最近的房间ID:
# 标记房间ID行,非房间ID行留空 df['Room ID'] = df['Code'].where(df['Code'].str.startswith('XY')) # 向前填充空值,让设备行关联到最近的房间ID df['Room ID'] = df['Room ID'].ffill()
3. 筛选设备数据并整理格式
只保留设备行,调整列名和顺序后输出:
# 筛选设备行(以Z开头的条码) equipment_data = df[df['Code'].str.startswith('Z')].copy() # 重命名列并调整顺序 equipment_data = equipment_data.rename(columns={'Code': 'Equipment ID'}) equipment_data = equipment_data[['Equipment ID', 'Room ID']] # 重置索引(可选,让索引从0开始) equipment_data = equipment_data.reset_index(drop=True) # 查看最终结果 print(equipment_data)
运行输出结果
Equipment ID Room ID 0 Z10001234 XY1110122 1 Z10001235 XY1110122 2 Z10001236 XY1110122 3 Z10001237 XY1110123 4 Z10001238 XY1110123 5 Z10001239 XY1110123
适配说明
如果房间/设备的条码前缀不是XY/Z,只需修改str.startswith()中的匹配字符串即可,比如房间ID以RM开头就改成str.startswith('RM')。
内容的提问来源于stack exchange,提问作者Klippiatt
相关产品推荐
相关产品推荐

