我有一个如下所示的数据框:
A B C Property Value
1 Bob b100 X1 prop1 a
2 Bob b100 X1 prop2 b
3 Bob b100 X2 prop1 c
4 Bob b100 Y1 prop1 a
5 Bob b100 Z prop9 b
6 Bob b200 X1 prop1 c
7 Bob b200 X1 prop2 d
如何使用 unstack、pivot 或其他一些方法来仅对 Property 和 Value 列进行 unstack?
我正在尝试获取以下数据框:
A B C prop1 prop2 prop9
1 Bob b100 X1 a b -
2 Bob b100 X2 c - -
3 Bob b100 Y1 a a -
4 Bob b100 Z - - b
5 Bob b200 X1 c d -
最佳答案
In [115]: (df.pivot_table(index=['A','B','C'], columns='Property', values='Value',
...: aggfunc='first', fill_value='-')
...: .reset_index()
...: .rename_axis(None,1))
...:
Out[115]:
A B C prop1 prop2 prop9
0 Bob b100 X1 a b -
1 Bob b100 X2 c - -
2 Bob b100 Y1 a - -
3 Bob b100 Z - - b
4 Bob b200 X1 c d -
或使用
unstack
:In [124]: (df.set_index(['A','B','C','Property'])
...: ['Value'].unstack('Property', fill_value='-')
...: .reset_index()
...: .rename_axis(None,1))
...:
Out[124]:
A B C prop1 prop2 prop9
0 Bob b100 X1 a b -
1 Bob b100 X2 c - -
2 Bob b100 Y1 a - -
3 Bob b100 Z - - b
4 Bob b200 X1 c d -
关于python - Pandas 和 python : unstack or pivot with many columns as indices?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48796890/