[英]Python Transpose Dataframe Rows as Column names and columns as rows
我有一個包含多個 x 和 y 列數據的大 df。 我想將 y 數據插入到常見的 x 值,然后使用常見的 x 值作為列名和 y 值作為行轉置數據。
我的代碼:
df = pd.DataFrame({'x1':np.linspace(0,10,5),'y1':np.linspace(0,50,5),'x2':np.linspace(0,8,5),'y2':np.linspace(0,80,5),'x3':np.linspace(0,9,5),'y3':np.linspace(0,90,5)})
df =
x1 y1 x2 y2 x3 y3
0 0.0 0.0 0.0 0.0 0.00 0.0
1 2.5 12.5 2.0 20.0 2.25 22.5
2 5.0 25.0 4.0 40.0 4.50 45.0
3 7.5 37.5 6.0 60.0 6.75 67.5
4 10.0 50.0 8.0 80.0 9.00 90.0
x 列的范圍是 0-10。 我想為相同的 x 0-10 范圍內插 y 列數據。 我在這里舉一個例子
預期答案:
df =
x y1 y2 y3
0 0 0 0 0
1 2.0 10 20 25
2 4.0 20 40 50
3 6.0 30 60 75
4 8.0 40 80 100
# I want to transpose the x data as column names and y columns as rows data
df =
0.0 2.0 4.0 6.0 8.0
y1 0 10 20 30 40
y2 0 20 40 60 80
y3 0 25 50 75 100
df.T
將轉置數據幀。
請嘗試以下操作:
df.columns = pd.MultiIndex.from_arrays([[i[1] for i in df.columns],
[i[0] for i in df.columns]])
def y_over_x(d):
d = d.droplevel(0, axis=1)
return d['y']/d['x']
y = df.groupby(level=0, axis=1).apply(y_over_x).fillna(0).add_prefix('y')
x = pd.Series(np.arange(0, 10, 2), name='x')
df2 = pd.concat([x, y.mul(x, axis=0).astype(int)], axis=1)
輸出:
x y1 y2 y3
0 0 0 0 0
1 2 10 20 20
2 4 20 40 40
3 6 30 60 60
4 8 40 80 80
然后轉置:
df2.set_index('x').T
輸出:
x 0 2 4 6 8
y1 0 10 20 30 40
y2 0 20 40 60 80
y3 0 20 40 60 80
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.