根据条件在数据框中划分两列

net*_*bug 1 python dataframe pandas

我有以下数据框:

|module     | name  |value |
|-----------|-------|------|
|node[11]   | x     |4.0   |
|node[11]   | y     |1.0   |
|node[2]    | x     |2.0   |
|node[2]    | y     |3.0   |
|node[21]   | x     |6.0   |
|node[21]   | y     |6.0   |
Run Code Online (Sandbox Code Playgroud)

并希望创建一个新的数据框,其中包含每个模块的值 (x/y)。所以预期的输出是

|module     | out   |
|-----------|-------|
|node[11]   | 4.0   |
|node[2]    | 0.66  |
|node[21]   | 1.0   |
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 5

你可以做pivot然后计算你的需要

out = df.pivot(*df).eval('x/y').to_frame('out').reset_index()
Out[23]: 
     module       out
0  node[11]  4.000000
1  node[21]  1.000000
2   node[2]  0.666667
Run Code Online (Sandbox Code Playgroud)

  • @MuhammadHassan 等于 df.pivot(index= modile, coluns='name', values= 'value'), * 是列表解包 ~ (2认同)