Python 旋转数据帧,无数字类型,索引不唯一

Python 旋转数据帧,无数字类型,索引不唯一,python,pandas,pivot-table,Python,Pandas,Pivot Table,我正在尝试将一些字符串数据转换为列,但使用起来很困难,因为我没有可以使用的唯一索引或多索引 样本格式 索引位置字段值 1地点1名字A 2位置1姓氏B 3位置1 dob C 4位置1电子邮件D 5地点1标题E 6地址1地址1 F 7位置1地址2 G 8位置1地址3 H 9地点1名字I 10位置1姓氏J 11位置1 dob K 12位置1电子邮件L 13地点1标题M 14位置1地址1 N 15位置1地址2 O 16位置1地址3 P 40地点2名字Q 41位置2姓氏R 42位置2 dob S 43位

我正在尝试将一些字符串数据转换为列,但使用起来很困难,因为我没有可以使用的唯一索引或多索引

样本格式

索引位置字段值
1地点1名字A
2位置1姓氏B
3位置1 dob C
4位置1电子邮件D
5地点1标题E
6地址1地址1 F
7位置1地址2 G
8位置1地址3 H
9地点1名字I
10位置1姓氏J
11位置1 dob K
12位置1电子邮件L
13地点1标题M
14位置1地址1 N
15位置1地址2 O
16位置1地址3 P
40地点2名字Q
41位置2姓氏R
42位置2 dob S
43位置2电子邮件T
44地点2标题U
45位置2地址1 V
46位置2地址2 W

47 location2 address3 X
您需要使用代理列进行轴心旋转。这里有一个使用
cumsum
+
set\u index
+
unstack
的解决方案

v = df.set_index(['location', 'field', df.field.eq('firstName').cumsum()]).unstack(-2) 
v.index = v.index.droplevel(-1)
v.columns = v.columns.droplevel(0)

field     address1 address2 address3         dob      email firstName  \
location                                                                
location1        F        G        H          C           D         A   
location1        N        O        P           K          L         I   
location2        V        W        X           S          T         Q   

field     lastName      title  
location                       
location1        B          E  
location1        J          M  
location2        R          U