簡體   English   中英

如何創建新的 pandas dataframe 列,其中包含所有其他列的值作為張量?

[英]How to create new pandas dataframe column containing values of all other columns as a tensor?

我正在嘗試創建一個新的特征列,它是一個包含現有列中的值的張量。 所以如果col A的值為'1',col B的值為'0',col C的值為0,那么新的特征列的值為[1,0,0]。

我嘗試了以下代碼:

import numpy as np
import pandas as pd
import torch

df = pd.DataFrame({"A":[1,1,0], "B":[0,1,1], "Sentiment":[0,0,1]})

df["new_feature"] = [df["A"].values, df["B"].values, df["C"].values]

在此處輸入圖像描述

...但結果不是我需要的。 結果是獲取每列的值,而不是跨行的值(多列值)。 例如,第一行的new_feature列值應該是 [1,0,0] 但它顯示 [1,1,0]

我的最終目標是獲得一個 dataframe 列,我可以將其用作火炬張量以輸入到神經網絡中。

torch.from_numpyapply lambda function 一起使用。

df["new_feature"] = df.apply(lambda x:torch.from_numpy(x.to_numpy()), axis = 1)
df
   A  B  C                        new_feature
0  1  0  0  [tensor(1), tensor(0), tensor(0)]
1  1  1  0  [tensor(1), tensor(1), tensor(0)]
2  0  1  1  [tensor(0), tensor(1), tensor(1)]

df["new_feature"][0]
tensor([1, 0, 0])

首先使用pd.Series.to_numpy
然后使用torch.from_numpy將 numpy 數組轉換為張量。

你想要:

df['new_feature'] = df.values.tolist()

Output:

   A  B  C new_feature
0  1  0  0   [1, 0, 0]
1  1  1  0   [1, 1, 0]
2  0  1  1   [0, 1, 1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM