我正在使用 Tibco Spotfire 中的一个表,其中包含以字符串形式存储在单列中的 FIX(财务信息交换)消息。
我需要将此列拆分为多个新列,其中每列代表一个 FIX 标记及其对应的值。
FIX消息的格式如下:
tag number + "=" + value + special character ""
有人有任何在 Spotfire 中实现此目标的技巧或解决方案吗?
谢谢!
修复消息示例:
8=FIX.4.49=5935=034=51349=TEST52=20240920-14:46:02.37456=TEST10=181
使用不可打印的特殊字符 SOH 进行打印:
如果您的数据具有一致的格式并且 FIX 数据中存在标签,您可以通过手动创建计算列将数据拆分为列。手动不太理想,但至少你只需要做一次。
例如,名称为“8”的计算列可以是:
Split(Split([fix_column],'\u0001',1),'=',2)
字符串 '\u0001' 用于分割 SOH 特殊字符上的文本。
只要标签 8 处于第一个位置,就可以工作。
如果标签数量或标签位置可变,那么更通用的解决方案是使用 python 数据函数。传入修复列作为参数并将结果放入新表中
import pandas as pd
r = []
for i, row in fix_col.items():
tags = row.split('\u0001')
tags = [tag for tag in tags if '=' in tag]
for tag_value in tags:
tag, value = tag_value.split('=')
r.append([i, tag, value])
df_out = pd.DataFrame(r,columns=['row_index', 'tag_number', 'tag_value']).pivot(index='row_index',columns='tag_number',values='tag_value').reset_index()
如果这是一次性的事情,您可能还想查看 Spotfire 文本到列工具