将列的数值转换为列名columns

import pandas as pd
dataframe = pd.read_csv("merge_yield.csv")
a = dataframe.iloc[:,1:]
a
ProductID LotID Mark LotID Pass Fail Yield Bin#
0 1460A AL4578 #2 D7 54 11 0.830769 10
1 1460A AL4578 #2 D7 54 11 0.830769 10
2 1460A AL4578 #2 D7 54 11 0.830769 7
3 1460A AL4578 #2 D7 54 11 0.830769 10
4 1460A AL4578 #2 D7 54 11 0.830769 10
... ... ... ... ... ... ... ...
121 1460A AL4578 #2 D2 61 0 1.000000 10
122 1460A AL4578 #2 D2 61 0 1.000000 10
123 1460A AL4578 #2 D2 61 0 1.000000 10
124 1460A AL4578 #2 D2 61 0 1.000000 10
125 1460A AL4578 #2 D2 61 0 1.000000 10

126 rows × 7 columns

b= a.groupby(['ProductID','LotID','Mark LotID','Pass','Fail','Yield','Bin#'],as_index=False).size()
b
ProductID LotID Mark LotID Pass Fail Yield Bin# size
0 1460A AL4578 #2 D2 61 0 1.000000 10 61
1 1460A AL4578 #2 D7 54 11 0.830769 7 11
2 1460A AL4578 #2 D7 54 11 0.830769 10 54
f = pd.pivot(b,index = ['ProductID','LotID','Mark LotID','Pass','Fail','Yield'], columns='Bin#')  # 转换
f
size
Bin# 7 10
ProductID LotID Mark LotID Pass Fail Yield
1460A AL4578 #2 D2 61 0 1.000000 NaN 61.0
#2 D7 54 11 0.830769 11.0 54.0
f.columns = f.columns.droplevel()  # 删除多层索引
f.columns = list(f.columns.values)
f.reset_index().fillna(0)
ProductID LotID Mark LotID Pass Fail Yield 7 10
0 1460A AL4578 #2 D2 61 0 1.000000 0.0 61.0
1 1460A AL4578 #2 D7 54 11 0.830769 11.0 54.0

参考文章:
https://blog.csdn.net/weixin_44285988/article/details/111885047
https://www.codenong.com/22233488/

posted @ 2021-12-29 18:42  兔子春  阅读(258)  评论(0)    收藏  举报