假设我有以下数据。
df_original
ID代码评分级别
1 Q1 0低
2 Q2 11轻微
3 Q3 100偏高
4 Q4 50培养基
5 Q5 1000偏高
6 Q6 122000偏高
我希望编码分数>100到100,其余的保持原样。
df_原‘编码’= '‘
分数= {0.0:0,11.0:0,100.0:100,50.0:50,1000.0:100,122000:100}
df_scores‘’EncodedScore‘=df_scores’scores‘..map(分数)
我有以下几条。
ID码分数EncodedScore级
1 Q1 0 0低
2 Q2 11 0轻微
3 Q3 100 100偏高
4 Q4 50 50培养基
5 Q5 1000 100偏高
6 Q6 122000 100偏高
我想用这个基于ID, Code, and EncodedScore的方法创建枢轴表。
# EncodedScore数据透视表
df_pivot= (
df_original.reset_index().pivot_table(index = "ID",
columns = "Code",
values = "EncodedScore", aggfunc=max, dropna=False)
)我根据编码的分数值得到了这个枢轴表。
df_pivot1
ID Q1 Q2 Q3 Q4 Q5 Q6
1 0
2 0
3 100
4 50
5 100
6 100 我的问题是在这个级别将EncodedScore值替换为Score值。我想要得到下表中的原始Score值。
df_pivot2
ID Q1 Q2 Q3 Q4 Q5 Q6
1 0
2 11
3 100
4 50
5 1000
6 122000有人能帮忙吗?
发布于 2021-12-23 15:44:32
试试这个:
new_df = df.drop(['Level'], axis=1).pivot(columns='Code', index='ID').fillna('').droplevel(0, axis=1).rename_axis(None, axis=1)输出:
>>> new_df
Q1 Q2 Q3 Q4 Q5 Q6
ID
1 0.0
2 11.0
3 100.0
4 50.0
5 1000.0
6 122000.0https://stackoverflow.com/questions/70464300
复制相似问题