You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:15:34