python - 透视 Pandas Dataframe,没有数字类型,索引不是唯一的

标签 python pandas pivot-table

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

样本格式

  index	location	field	        value
1	location1	firstName	A
2	location1	lastName	B
3	location1	dob	        C 
4	location1	email	        D
5	location1	title	        E
6	location1	address1	F
7	location1	address2	G
8	location1	address3	H
9	location1	firstName	I
10	location1	lastName	J
11	location1	dob	        K
12	location1	email	        L
13	location1	title	        M
14	location1	address1	N
15	location1	address2	O
16	location1	address3	P
40	location2	firstName	Q
41	location2	lastName	R
42	location2	dob	        S
43	location2	email	        T
44	location2	title	        U
45	location2	address1	V
46	location2	address2	W
47	location2	address3	X


我想转向的格式:

location	firstName lastName dob email title address1	address2 address3
location1	A	B	C	D	E	F	G	H
location1	I	J	K	L	M	N	O	P
location2	Q	R	S	T	U	V	W	X


我最接近实现这一点的是使用 aggfuc='first',但这我需要每个位置的所有值,而不仅仅是第一个。

我想转向的格式:

df = df.pivot_table(index='location',columns='field',values='value',aggfunc='first')

最佳答案

您需要使用代理列进行透视。这是使用 cumsum 的解决方案+ set_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  

关于python - 透视 Pandas Dataframe,没有数字类型,索引不是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48630089/

相关文章:

python - 内核 GridSearchCV 参数

python - 可以使用字符串来引用对象属性吗?

python - 在给定图上绘制一条水平线

python - 在 pandas plot 图例中显示非 ascii(日文)字符

python - 用另一个系列的值覆盖(更新) Pandas 系列?

excel - 防止 Excel 数据透视表页面项覆盖上面的单元格

excel - 如何按多列对数据透视表排序?

python - 如何计算图像数据集中 RGB 值的 3x3 协方差矩阵?

python - 访问 WrappedArray 元素

python - 操作 pivot_table 中的多索引列