s_khan92:
私は私が詳細350以上の列を持つ大規模なデータセットを持っていると私は列と行と列の値にその350個の列を変換したいです。ユーザーがブランドにランキング「1-10」を提供し、私はcoluumnsとして(1-10)をランキング表示したいです。ここに私のDFがどのように見えるかです:
id Gender Age BMW Audi VW Mercedes
1 M 20 3 1 4 2
2 F 50 1 2 3 4
3 F 25 2 1 4 3
そして私は、目的の列のように、このようにそれを変更したいと思います。
id Gender Age Rank1 Rank2 Rank3 Rank4
1 M 20 Audi Mercedes BMW VW
2 F 50 BMW Audi VW Mercedes
3 F 25 Audi BMW Mercedes VW
このように、私は...非常に多くの列のいずれかのソリューションを取り除くことができますか?
anky_91:
あなたのことができmelt+pivot
:
idx = ['id','Gender','Age']
m = df.melt(idx).pivot_table(index=idx,columns='value',values='variable',aggfunc='first')
out = m.add_prefix('Rank').reset_index(idx).rename_axis(index=None,columns=None)
print(out)
id Gender Age Rank1 Rank2 Rank3 Rank4
0 1 M 20 Audi Mercedes BMW VW
1 2 F 50 BMW Audi VW Mercedes
2 3 F 25 Audi BMW Mercedes VW