![](/img/trans.png)
[英]Pandas dataframe, how to create a new totals column containing values based on other column
[英]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_numpy
與apply
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.