我有以下形式的数据集:
ID col1 col2 col3
a 0 1 0
b 1 0 0
c 1 0 0
我想将其转换为以下形式:
ID value
a col2
b col1
c col1
答案 0 :(得分:0)
每个ID的n列解决方案
df2 = df.melt('ID', var_name='value', value_name='n').loc[lambda df: df['n'].eq(1)]
new_df = df2.pivot_table(index='ID',
columns=df2.groupby('ID').cumcount().add(1),
values=['value'], aggfunc='first')
new_df = (new_df.set_axis([f'{x}{y}' for x, y in new_df.columns], axis=1)
.reset_index())
print(new_df)
输出
ID value1
0 a col2
1 b col1
2 c col1
另一个样本
ID col1 col2 col3
a 0 1 0
b 1 1 0
c 1 0 1
输出
ID value1 value2
0 a col2 NaN
1 b col1 col2
2 c col1 col3