如何在MDF文件中使用asammdf(Python)添加字符串信号

编程语言 2026-07-10

我正在用一个来自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.1pandas 3.0.2Python 3.13Linux 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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章