我非常尷尬地問這個帖子中的問題,因爲我確定它是完全基本的。然而,我已經花了近兩年了數小時鑽研這些pandas
文檔,並在陽光下亂投醫,無果......無法找到一個數據框彈出的方式
舉個例子,像這樣的一個數據幀:
A B C D x y z
0 a0 b0 c0 d0 0.007 0.710 0.990
1 a0 b0 c0 d1 0.283 0.040 1.027
2 a0 b0 c1 d0 0.017 0.688 2.840
3 a0 b0 c1 d1 0.167 0.132 2.471
4 a0 b1 c0 d0 0.041 0.851 1.078
5 a0 b1 c0 d1 0.235 1.027 1.027
6 a0 b1 c1 d0 0.037 0.934 2.282
7 a0 b1 c1 d1 0.023 1.049 2.826
8 a1 b0 c0 d0 0.912 0.425 1.055
9 a1 b0 c0 d1 0.329 0.932 0.836
10 a1 b0 c1 d0 0.481 0.681 0.997
11 a1 b0 c1 d1 0.782 0.595 2.294
12 a1 b1 c0 d0 0.264 0.918 0.857
13 a1 b1 c0 d1 0.053 1.001 0.920
14 a1 b1 c1 d0 1.161 1.090 1.470
15 a1 b1 c1 d1 0.130 0.992 2.121
請注意,列A
,B
,C
和D
的列的不同值的每個組合在此數據幀中只出現一次。因此,可以將這一列的子集看作「關鍵列」,將其餘列作爲「值列」。
我想從這個產生一個新的框架,通過「抨擊」列C
。我的意思是,對於其餘「關鍵列」(A
,B
和D
)的值的每個不同組合,C
列的值在新幀中產生相應的「值列」。
例如,如果我們忽略列x
和y
的那一刻,我上面提到的拆垛操作會產生數據幀:
A B D c0 c1
0 a0 b0 d0 0.990 2.840
1 a0 b0 d1 1.027 2.471
2 a0 b1 d0 1.078 2.282
3 a0 b1 d1 1.027 2.826
4 a1 b0 d0 1.055 0.997
5 a1 b0 d1 0.836 2.294
6 a1 b1 d0 0.857 1.470
7 a1 b1 d1 0.920 2.121
這裏新列c0
和c1
的值是從獲得列z
的值(在原始數據幀中),列A
,B
和D
的值的對應唯一組合。
我該怎麼做?
它會是不錯的可以做一個類似的卸堆操作與原始幀(即一個與所有值列x
,y
和z
),或者使用某種形式的分層列組織的新框架(即現在在哪裏列x
,y
,並且z
會每個在於,反過來,「subcolums」 c0
和c1
的),或者是一些方案來命名使用複合名稱的新列(例如,在新的框架柱x
, y
和z
將被欄目列x_c0
,x_c1
,y_c0
,y_c1
,z_c0
,並z_c1
,等等),但是這可能是希望太多...
PS:這裏有一個數據幀的數據上面,TSV格式:
A B C D x y z
a0 b0 c0 d0 0.007 0.71 0.99
a0 b0 c0 d1 0.283 0.04 1.027
a0 b0 c1 d0 0.017 0.688 2.84
a0 b0 c1 d1 0.167 0.132 2.471
a0 b1 c0 d0 0.041 0.851 1.078
a0 b1 c0 d1 0.235 1.027 1.027
a0 b1 c1 d0 0.037 0.934 2.282
a0 b1 c1 d1 0.023 1.049 2.826
a1 b0 c0 d0 0.912 0.425 1.055
a1 b0 c0 d1 0.329 0.932 0.836
a1 b0 c1 d0 0.481 0.681 0.997
a1 b0 c1 d1 0.782 0.595 2.294
a1 b1 c0 d0 0.264 0.918 0.857
a1 b1 c0 d1 0.053 1.001 0.92
a1 b1 c1 d0 1.161 1.09 1.47
a1 b1 c1 d1 0.13 0.992 2.121
更明確地說,數據幀是同構到dict
的鍵是4元組('a0', 'b0', 'c0', 'd0'), ('a0', 'b0', 'c0', 'd1'), ..., ('a1', 'b1', 'c1', 'd1')
,並且其值是3元組(0.007, 0.710, 0.990), (0.283, 0.040, 1.027), ..., (0.130, 0.992, 2.121)
。我嘗試過的很多事情之一是找到一種方法,通過「鍵列」的獨特組合來索引數據框。同樣的故事:這應該是「你好,世界」級的東西,在pandas
,但我無法找到如何做到這一點的文件中。顯然,我的大腦和誰寫的pandas
文檔是完全相互正交的大腦...