Adi*_*rma 0 python dataframe python-3.x pandas
我有以下数据:
User Group
user1 G1
user1 G2
user1 G3
user1 G7
user2 G10
user2 G4
user2 G7
user2 G1
user2 G13
user3 G16
user3 G5
user3 G6
user4 G2
user4 G13
user4 G15
user4 G10
Run Code Online (Sandbox Code Playgroud)
我想以以下格式准备相关数据:
G1 G2 G3 G4 G5 G6 G7 G10 G13 G15 G16
user1 1 1 1 0 0 0 1 0 0 0 0
user2 1 0 0 1 0 0 1 1 1 0 0
user3 0 0 0 0 1 1 0 0 1 0 1
user4 0 1 0 0 0 0 0 1 1 1 0
Run Code Online (Sandbox Code Playgroud)
我尝试分别调换每个用户,但这对我没有帮助。有什么办法可以完成这项工作,因为我有更大的数据。我知道它会创建一个解析矩阵,但这就是我想要创建的。
作为对另一个答案的补充,您可以使用自然排序natsort
:
from natsort import natsorted
df2 = pd.crosstab(df['User'], df['Group'])
df2[natsorted(df2.columns)]
Run Code Online (Sandbox Code Playgroud)
输出:
Group G1 G2 G3 G4 G5 G6 G7 G10 G13 G15 G16
User
user1 1 1 1 0 0 0 1 0 0 0 0
user2 1 0 0 1 0 0 1 1 1 0 0
user3 0 0 0 0 1 1 0 0 0 0 1
user4 0 1 0 0 0 0 0 1 1 1 0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46 次 |
最近记录: |