如何从包含数组的 pandas DataFrame 创建 tf.Tensor?

How do I create a tf.Tensor from a pandas DataFrame containing arrays?

我有一个如下所示的 pandas DataFrame。

import pandas as pd
import numpy as np
import tensorflow as tf  # Version 2.8.0
df = pd.DataFrame({"id": 
                   ["i123", "i456"],  
                   "col": [np.array(["igh", "ghdd", "yu"]),
                           np.array(["uh", "lkk", "nj"])]})
print(df)

输出:

    id      col
0   i123    [igh, ghdd, yu]
1   i456    [uh, lkk, nj]

我想根据 col 列的值创建一个 Tensor,以便在特定用例中使用它们。我试过转换像

这样的值
values = df["col"].to_numpy()
values

看起来像:

array([array(['igh', 'ghdd', 'yu'], dtype='<U4'),
       array(['uh', 'lkk', 'nj'], dtype='<U3')], dtype=object)

当我尝试将其转换为 Tensor 时,

tf.constant(values)

我遇到异常:

ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).

我可以从 documentation 中看出 tf.constant 方法应该适用于非常相似的数组

我创建的 values 变量有 .shape(2,) 而下图有 (2, 3),这可能是问题所在。 我似乎无法使 dtype and/or 形状完全匹配,而且我不确定如何让它工作。有什么想法吗?

尝试:

import pandas as pd
import numpy as np
import tensorflow as tf  # Version 2.8.0
df = pd.DataFrame({"id": 
                   ["i123", "i456"],  
                   "col": [np.array(["igh", "ghdd", "yu"]),
                           np.array(["uh", "lkk", "nj"])]})

values = df["col"].to_list()
print(tf.constant(values))
tf.Tensor(
[[b'igh' b'ghdd' b'yu']
 [b'uh' b'lkk' b'nj']], shape=(2, 3), dtype=string)

或者

values = np.stack(df["col"].to_numpy())
print(tf.constant(values))