[英]Pandas, create columns based on value in row
我有以下 dataframe (這只是一行):
X0 X1 X2 X3 X4 X5 X6 X8
32 23 17 0 3 24 9 14
我想 map X8 列中的值 14 到以下列表mylist
:
[ 0.06405287, -0.1176078 , -0.06206927, 0.08389127, -0.18036067,
0.35158703, -0.0928449 , -0.0974429 , -0.06705306, -0.17196381,
-0.03776502, 0.09204011, 0.47813812, 0.16258538, 0.2699648 ,
0.07496626, -0.09791522, -0.31499937, -0.24898018, 0.06126055,
0.13187763, 0.21042736, -0.1585868 , 0.08355565, -0.13935572,
0.12408883, 0.2043313 , -0.12544186, -0.09223691, 0.00720569]
為了這個問題,這里有一個 for 循環,它創建一個 dataframe。
col = {}
col['X8'] = {} #
col['X8']['14']= {} # just creating the double nest for the sake of the example, this would of course be 3 for loops because I need to match each unique value in each column to its corresponding list of 30 values
for i, x in mylist:
col['X8']['14'][i] = x
colx814 = pd.DataFrame.from_dict(col['X8']['14'],orient='index').T
現在我有一個看起來像這樣的 dataframe:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
0.064053 -0.117608 -0.062069 0.083891 -0.180361 0.351587 -0.092845 -0.097443 -0.067053 -0.171964 -0.037765 0.09204 0.478138 0.162585 0.269965 0.074966 -0.097915 -0.314999 -0.24898 0.061261 0.131878 0.210427 -0.158587 0.083556 -0.139356 0.124089 0.204331 -0.125442 -0.092237 0.007206
如何將此加入我原來的 dataframe? 我的猜測是map+apply+concat,但我不確定如何有效地組合它們。 另一種解決方案是將每一列復制 30 次,然后對每一列進行迭代+替換? 我搜索並找不到這個問題的答案,所以我想我會發布它以防有人有答案,如果沒有自己回答。 這就是我要找的:
X0 X1 X2 X3 X4 X5 X6 X8 X8_0 X8_1 X8_2 ...etc
32 23 17 0 3 24 9 14 mylist[0] mylist[1] mylist[2] ...etc
當然,每一列都有自己的 30 個 XN_n 列。
weights = {}
for index, x in enumerate(encoded.columns):
weights[x] = {}
for id, val in enumerate(encoded[x].unique()):
weights[x][val] = {}
for weightid, weightval in enumerate(model_full.get_layer(embeddings[index]).get_weights()[0][id]):
weights[x][val][weightid] = weightval
mappedembeddings = pd.DataFrame()
encodedindex = []
for row in encoded.iterrows():
encodedindex.append(row[0])
df0 = pd.DataFrame()
for k, v in row[1].to_dict().items():
names = []
for z in weights[k][v].keys():
names.append(str(k)+'_'+str(z))
tempdf = pd.DataFrame([weights[k][v]])
tempdf.columns = names
df0 = pd.concat([df0,tempdf],axis=1)
mappedembeddings = pd.concat([mappedembeddings,df0],axis=0)
mappedembeddings.index = encodedindex
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.