如何在MDF文件中使用asammdf(Python)添加字符串信号
我正在用一个来自pandas数据框的时间序列数据创建一个mdf文件。我有一些字符串通道,不确定怎么添加,运行下面的代码会报错。
data = {
"GLOBAL_TIME": [1, 2, 3, 4, 5],
"INT_SIGNAL": [10, 20, 30, 40, 50],
"FLOAT_SIGNAL": [1.1, 2.2, 3.3, 4.4, 5.5],
"STRING_SIGNAL": ["a", "a", "a", "a", "a"],
}
df_test2 = pd.DataFrame(data)
df_test2
new_mdf_from_df = MDF()
for column in df_test2.columns:
sig = Signal(
samples=df_test2[column].values,
timestamps=df_test2.index.values,
name=column
)
try:
new_mdf_from_df.append(sig)
except Exception as e:
print(f"Error occurred while appending signal for column '{column}': {e}")
Error occurred while appending signal for column 'STRING_SIGNAL':
Unknown type: dtype=object, shape=(5,)
添加STRING_SIGNAL的最佳方式是什么?
解决方案
我在asammdf 8.8.1、pandas 3.0.2、Python 3.13、Linux Mint 上运行你的代码,得到的是不同的错误:
Error occurred while appending signal for column 'STRING_SIGNAL':
wrong encoding "None" for string signal
但在使用Signal(..., encoding="utf-8")后它就能正确工作。
但我发现我的列有dtype:str,而你的错误显示dtype=object,也许这就成了问题。
当我使用
df_test2["STRING_SIGNAL"] = df_test2["STRING_SIGNAL"].astype(object)
时,就会得到你的错误。
但当我使用
df_test2["STRING_SIGNAL"] = df_test2["STRING_SIGNAL"].astype(str)
时,它又能工作。
似乎另一种方法是使用.to_list()将其作为普通列表发送,而不是.values
samples=df_test2[column].to_list(),
但是如果这列中包含一些整数、浮点数或None,也可能不起作用,可能需要在将它们用于Signal之前清理所有数据。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。