使用 pandas 进行高级分组和重塑转换
Advance grouping and reshaping transformation using pandas
我有一个这样的 pandas 数据框。
Territory_id client_id patient_id Total Clinic Clinic Number Attribute.2 Value
43 172 6021 1 Clinic 1 Service Date 06/22/2017
43 172 6021 1 Clinic 1 Product A
43 172 6021 1 Clinic 1 Qty 1
43 172 6021 1 Clinic 1 Amount 80.63
43 172 6021 1 Clinic 1 Age 11 y 4 m
43 172 6021 1 Clinic 1 Days Last Clinic 0
43 172 6137 1 Clinic 1 Service Date 06/22/2017
43 172 6137 1 Clinic 1 Product B
43 172 6137 1 Clinic 1 Qty 1
43 172 6137 1 Clinic 1 Amount 80.63
43 172 6137 1 Clinic 1 Age 7 y
43 172 6137 1 Clinic 1 Days Last Clinic 0
43 187 5658 5 Clinic 1 Service Date 06/07/2017
43 187 5658 5 Clinic 1 Product C
43 187 5658 5 Clinic 1 Qty 1
43 187 5658 5 Clinic 1 Amount 0
43 187 5658 5 Clinic 1 Age 9 y 1 m
43 187 5658 5 Clinic 1 Days Last Clinic 0
43 187 5658 5 Clinic 2 Service Date 06/30/2017
43 187 5658 5 Clinic 2 Product D
43 187 5658 5 Clinic 2 Qty 2
43 187 5658 5 Clinic 2 Amount 52.48
43 187 5658 5 Clinic 2 Age 9 y 1 m
43 187 5658 5 Clinic 2 Days Last Clinic 23
43 187 5658 5 Clinic 3 Service Date 09/12/2017
43 187 5658 5 Clinic 3 Product E
43 187 5658 5 Clinic 3 Qty 3
43 187 5658 5 Clinic 3 Amount 78.72
43 187 5658 5 Clinic 3 Age 9 y 4 m
43 187 5658 5 Clinic 3 Days Last Clinic 74
43 187 5658 5 Clinic 4 Service Date 09/05/2018
43 187 5658 5 Clinic 4 Product F
43 187 5658 5 Clinic 4 Qty 2
43 187 5658 5 Clinic 4 Amount 53.72
43 187 5658 5 Clinic 4 Age 10 y 4 m
43 187 5658 5 Clinic 4 Days Last Clinic 358
我希望结果按 Attribute.2 列名称重塑。有 6 个属性 Service Datea、Product、Qty、Amount、Age、Day Last Clinic。我希望这些列应该移动到 1 行,其他列的值应该与最后一列或第一列相同。
我尝试使用 pivot table 但它只有 returns 第一个记录。
df.pivot_table(index=['Territory_id','client_id','patient_id','Total Clinic','Clinic Number'],
columns='Attribute.2',
values='Value',
aggfunc='first'
)
需要帮助。
谢谢
最后尝试reset_index
:
df.pivot_table(index=['Territory_id','client_id','patient_id','Total Clinic','Clinic Number'],
columns='Attribute.2',
values='Value',
aggfunc='first'
).reset_index()
输出:
Attribute.2 Territory_id client_id patient_id Total Clinic Clinic Number Age Amount Days Last Clinic Product Qty Service Date
0 43 172 6021 1 Clinic 1 11 y 4 m 80.63 0 A 1 06/22/2017
1 43 172 6137 1 Clinic 1 7 y 80.63 0 B 1 06/22/2017
2 43 187 5658 5 Clinic 1 9 y 1 m 0 0 C 1 06/07/2017
3 43 187 5658 5 Clinic 2 9 y 1 m 52.48 23 D 2 06/30/2017
4 43 187 5658 5 Clinic 3 9 y 4 m 78.72 74 E 3 09/12/2017
5 43 187 5658 5 Clinic 4 10 y 4 m 53.72 358 F 2 09/05/2018
我有一个这样的 pandas 数据框。
Territory_id client_id patient_id Total Clinic Clinic Number Attribute.2 Value
43 172 6021 1 Clinic 1 Service Date 06/22/2017
43 172 6021 1 Clinic 1 Product A
43 172 6021 1 Clinic 1 Qty 1
43 172 6021 1 Clinic 1 Amount 80.63
43 172 6021 1 Clinic 1 Age 11 y 4 m
43 172 6021 1 Clinic 1 Days Last Clinic 0
43 172 6137 1 Clinic 1 Service Date 06/22/2017
43 172 6137 1 Clinic 1 Product B
43 172 6137 1 Clinic 1 Qty 1
43 172 6137 1 Clinic 1 Amount 80.63
43 172 6137 1 Clinic 1 Age 7 y
43 172 6137 1 Clinic 1 Days Last Clinic 0
43 187 5658 5 Clinic 1 Service Date 06/07/2017
43 187 5658 5 Clinic 1 Product C
43 187 5658 5 Clinic 1 Qty 1
43 187 5658 5 Clinic 1 Amount 0
43 187 5658 5 Clinic 1 Age 9 y 1 m
43 187 5658 5 Clinic 1 Days Last Clinic 0
43 187 5658 5 Clinic 2 Service Date 06/30/2017
43 187 5658 5 Clinic 2 Product D
43 187 5658 5 Clinic 2 Qty 2
43 187 5658 5 Clinic 2 Amount 52.48
43 187 5658 5 Clinic 2 Age 9 y 1 m
43 187 5658 5 Clinic 2 Days Last Clinic 23
43 187 5658 5 Clinic 3 Service Date 09/12/2017
43 187 5658 5 Clinic 3 Product E
43 187 5658 5 Clinic 3 Qty 3
43 187 5658 5 Clinic 3 Amount 78.72
43 187 5658 5 Clinic 3 Age 9 y 4 m
43 187 5658 5 Clinic 3 Days Last Clinic 74
43 187 5658 5 Clinic 4 Service Date 09/05/2018
43 187 5658 5 Clinic 4 Product F
43 187 5658 5 Clinic 4 Qty 2
43 187 5658 5 Clinic 4 Amount 53.72
43 187 5658 5 Clinic 4 Age 10 y 4 m
43 187 5658 5 Clinic 4 Days Last Clinic 358
我希望结果按 Attribute.2 列名称重塑。有 6 个属性 Service Datea、Product、Qty、Amount、Age、Day Last Clinic。我希望这些列应该移动到 1 行,其他列的值应该与最后一列或第一列相同。
我尝试使用 pivot table 但它只有 returns 第一个记录。
df.pivot_table(index=['Territory_id','client_id','patient_id','Total Clinic','Clinic Number'],
columns='Attribute.2',
values='Value',
aggfunc='first'
)
需要帮助。
谢谢
最后尝试reset_index
:
df.pivot_table(index=['Territory_id','client_id','patient_id','Total Clinic','Clinic Number'],
columns='Attribute.2',
values='Value',
aggfunc='first'
).reset_index()
输出:
Attribute.2 Territory_id client_id patient_id Total Clinic Clinic Number Age Amount Days Last Clinic Product Qty Service Date
0 43 172 6021 1 Clinic 1 11 y 4 m 80.63 0 A 1 06/22/2017
1 43 172 6137 1 Clinic 1 7 y 80.63 0 B 1 06/22/2017
2 43 187 5658 5 Clinic 1 9 y 1 m 0 0 C 1 06/07/2017
3 43 187 5658 5 Clinic 2 9 y 1 m 52.48 23 D 2 06/30/2017
4 43 187 5658 5 Clinic 3 9 y 4 m 78.72 74 E 3 09/12/2017
5 43 187 5658 5 Clinic 4 10 y 4 m 53.72 358 F 2 09/05/2018