将 numpy 矩阵分配给 pandas 列
Assign numpy matrix to pandas columns
我有 48870 rows
的数据框和形状 (48870, 768)
的计算嵌入
我想将这个嵌入分配给 padnas 列
当我尝试
test['original_text_embeddings'] = embeddings
我有一个错误:Wrong number of items passed 768, placement implies 1
我知道如果像 df.loc['original_text_embeddings'] = embeddings[0] 这样的东西会起作用,但我需要自动化这个过程
您的嵌入有 768 列,这将转化为数据框中的 768 列。您正在尝试将嵌入中的所有列分配给数据框中的一列,这是不可能的。
你可以做的是从嵌入生成一个新的数据帧并将测试 df 与嵌入 df 连接起来
embedding_df = pd.DataFrame(embeddings)
test = pd.concat([test, embedding_df], axis=1)
查看有关处理索引和在不同轴上串联的文档:
https://pandas.pydata.org/docs/reference/api/pandas.concat.html
A dataframe/column 需要 1d list/array:
In [84]: x = np.arange(12).reshape(3,4)
In [85]: pd.Series(x)
...
ValueError: Data must be 1-dimensional
将数组拆分为(数组的)列表:
In [86]: pd.Series(list(x))
Out[86]:
0 [0, 1, 2, 3]
1 [4, 5, 6, 7]
2 [8, 9, 10, 11]
dtype: object
In [87]: _.to_numpy()
Out[87]:
array([array([0, 1, 2, 3]), array([4, 5, 6, 7]), array([ 8, 9, 10, 11])],
dtype=object)
我有 48870 rows
的数据框和形状 (48870, 768)
我想将这个嵌入分配给 padnas 列 当我尝试
test['original_text_embeddings'] = embeddings
我有一个错误:Wrong number of items passed 768, placement implies 1
我知道如果像 df.loc['original_text_embeddings'] = embeddings[0] 这样的东西会起作用,但我需要自动化这个过程
您的嵌入有 768 列,这将转化为数据框中的 768 列。您正在尝试将嵌入中的所有列分配给数据框中的一列,这是不可能的。
你可以做的是从嵌入生成一个新的数据帧并将测试 df 与嵌入 df 连接起来
embedding_df = pd.DataFrame(embeddings)
test = pd.concat([test, embedding_df], axis=1)
查看有关处理索引和在不同轴上串联的文档: https://pandas.pydata.org/docs/reference/api/pandas.concat.html
A dataframe/column 需要 1d list/array:
In [84]: x = np.arange(12).reshape(3,4)
In [85]: pd.Series(x)
...
ValueError: Data must be 1-dimensional
将数组拆分为(数组的)列表:
In [86]: pd.Series(list(x))
Out[86]:
0 [0, 1, 2, 3]
1 [4, 5, 6, 7]
2 [8, 9, 10, 11]
dtype: object
In [87]: _.to_numpy()
Out[87]:
array([array([0, 1, 2, 3]), array([4, 5, 6, 7]), array([ 8, 9, 10, 11])],
dtype=object)