首页 > 解决方案 > 将python中的数据格式转换为ascii

问题描述

来自 Allen Bradley PLC 的数据采用“值”列中的 5 位数字格式

| tagid | value | datetime                | quality |
|-------|-------|-------------------------|---------|
| T0    | 21328 | 05-03-2021 14:11:53.087 | 192     |
| T1    | 12340 | 05-03-2021 14:14:25.787 | 192     |
| T2    | 17992 | 05-03-2021 14:16:52.687 | 192     |
| T0    | 17992 | 05-03-2021 14:19:14.470 | 192     |
| T1    | 17992 | 05-03-2021 14:21:31.623 | 192     |
| T2    | 21328 | 05-03-2021 14:23:50.220 | 192     |
| T0    | 21328 | 05-03-2021 14:26:13.747 | 192     |
| T1    | 17992 | 05-03-2021 14:28:29.817 | 192     |
| T2    | 17992 | 05-03-2021 14:31:03.603 | 192     |

最初我无法识别从这个 5 位值中获取所需值的步骤。

然后在 Excel/Python 中进行了一些实验后,我做了以下步骤并得到了正确的期望值

步骤:
步骤 1. 将值除以 256 并四舍五入(例如 17992/256,即 70
步骤 2. 对相同的值进行修改(例如:=Mod(17992,256),即 72
步骤 3. 找到等于 70 的 Ascii 值,即 F
第 4 步。找到等于 72 的 Ascii 值,即 H
第 5 步:连接 F&H,即 FH

所以说 17992 的期望值是 'FH' , 12340 是 '0468'

| tagid | value | datetime                | quality |
|-------|-------|-------------------------|---------|
| T0    | FH    | 05-03-2021 14:11:53.087 | 192     |
| T1    | 02    | 05-03-2021 14:14:25.787 | 192     |

python数据框中有没有简单有效的方法来做以上步骤,而不是一步一步做

标签: pythonpandasascii

解决方案


  • 简单整数divmod
  • apply()到系列获取 ASCII 码
df.value = (df.value//256).apply(chr) + (df.value%256).apply(chr)

标记 价值 约会时间 质量
0 T0 SP 2021 年 5 月 3 日 14:11:53.087 192
1 T1 04 2021 年 5 月 3 日 14:14:25.787 192
2 T2 跳频 2021 年 5 月 3 日 14:16:52.687 192
3 T0 跳频 2021 年 5 月 3 日 14:19:14.470 192
4 T1 跳频 2021 年 5 月 3 日 14:21:31.623 192
5 T2 SP 2021 年 5 月 3 日 14:23:50.220 192
6 T0 SP 2021 年 5 月 3 日 14:26:13.747 192
7 T1 跳频 2021 年 5 月 3 日 14:28:29.817 192
8 T2 跳频 2021 年 5 月 3 日 14:31:03.603 192

推荐阅读