簡體   English   中英

將3列(x,y,結果)Python Pandas DataFrame轉換為以x(唯一)為行,y(唯一)為列的結果值的數據幀

[英]Transform a 3 columns (x, y, result) Python Pandas DataFrame to a DataFrame of result values with x (unique) as row and y (unique) as column

我想像這樣轉換Python Pandas DataFrame df

      x  y  result
id                
1  -0.8 -1    0.64
2  -0.8  0   -0.36
3  -0.4 -1    0.16
4  -0.4  0   -0.84
5   0.0 -1    0.00
6   0.0  0   -1.00
7   0.4 -1    0.16
8   0.4  0   -0.84
9   0.8 -1    0.64
10  0.8  0   -0.36

到這樣的DataFrame:

        -1     0
-0.8  0.64 -0.36
-0.4  0.16 -0.84
 0.0     0 -1.00
 0.4  0.16 -0.84
 0.8  0.64 -0.36

我知道如何獲得唯一的x值:

df["x"].unique()

和唯一的y值,具有:

df["y"].unique()

但我不知道如何在DataFrame中“分配” result列值。

我寧願使用向量化解決方案,以避免for循環。

那是一個樞軸操作,您可以使用.pivot_table

>>> df.pivot_table(values='result', index='x', columns='y')
y       -1     0
x               
-0.8  0.64 -0.36
-0.4  0.16 -0.84
 0.0  0.00 -1.00
 0.4  0.16 -0.84
 0.8  0.64 -0.36

.pivot

>>> df.pivot(index='x', columns='y')['result']
y       -1     0
x               
-0.8  0.64 -0.36
-0.4  0.16 -0.84
 0.0  0.00 -1.00
 0.4  0.16 -0.84
 0.8  0.64 -0.36

.groupby后跟.unstack

>>> df.groupby(['x', 'y'])['result'].aggregate('first').unstack()
y       -1     0
x               
-0.8  0.64 -0.36
-0.4  0.16 -0.84
 0.0  0.00 -1.00
 0.4  0.16 -0.84
 0.8  0.64 -0.36

暫無
暫無

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

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