转置数据帧

2024-10-04 07:31:18 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将数据帧df转换为数据帧结果

In [52]: df
Out[52]:
   unit  Pen Starvation  Roller Mar_S2  Pick Tire Mark  PK
0  1088             1.0            NaN             NaN   0
1  1089             NaN            2.0             1.0   1
2  1090             1.0            NaN             3.0   2
In [53]: result
Out[53]:
   PK  unit          Defect  Total
0   0  1088  Pen Starvation      1
1   1  1089   Roller Mar_S2      2
2   1  1089  Pick Tire Mark      1
3   2  1090  Pen Starvation      1
4   2  1090  Pick Tire Mark      3

Tags: 数据indfunitnanoutrollermar
1条回答
网友
1楼 · 发布于 2024-10-04 07:31:18

我们可以^{}{a2}然后转换index{a3}:

result = (
    df.set_index(['PK', 'unit'])  # Columns to keep
        .stack()  # Reshape long
        .index.to_frame(index=False)  # Convert index to DataFrame
        .rename(columns={2: 'Defect'})  # Rename new level to Defect
)

result

   PK  unit          Defect
0   0  1088  Pen Starvation
1   1  1089   Roller Mar_S2
2   1  1089  Pick Tire Mark
3   2  1090  Pen Starvation
4   2  1090  Pick Tire Mark

数据帧构造函数:

import pandas as pd
from numpy import nan

df = pd.DataFrame({
    'unit': [1088, 1089, 1090], 'Pen Starvation': [1.0, nan, 1.0],
    'Roller Mar_S2': [nan, 1.0, nan], 'Pick Tire Mark': [nan, 1.0, 1.0],
    'PK': [0, 1, 2]
})

相关问题 更多 >