[英]Reshaping Pandas dataframe based on repeating values in a column
Pandas 非常新,可能在某个地方得到了回答,但我似乎无法找到我正在寻找的确切内容。 假设我的数据集具有这种类型的结构
Animal | Age | Color | Length
Cat 1 Brown 50cm
Cat 2 White 60cm
Cat 3 Brown 55cm
Dog 1 White 99cm
Dog 2 White 129cm
Dog 3 White 105cm
我怎样才能最容易地将其转换为这种格式,其中现有的列是水平附加的,而不是为特定动物垂直排列的
Animal | Age_1 | Color_1 | Length_1 | Age_2 | Color_2 | Length_2 | Age_3 | Color_3 | Length_3
Cat 1 Brown 50cm 2 White 60cm 3 Brown 55cm
Dog 1 White 99cm 2 White 129cm 3 White 105cm
也许不是最好使用的示例标签,但希望能得到重点,我也非常感谢答案的链接。
通过GroupBy.cumcount
和DataFrame.set_index
创建MultiIndex
,然后通过DataFrame.unstack
和 sortinf 列中的第二级MultiIndex
进行整形,然后用f-string
将其展平并将索引转换为列:
df1 = (df.set_index(['Animal', df.groupby('Animal').cumcount().add(1)])
.unstack()
.sort_index(axis=1, level=1))
df1.columns = [f'{a}_{b}' for a, b in df1.columns]
df1 = df1.reset_index()
print (df1)
Animal Age_1 Color_1 Length_1 Age_2 Color_2 Length_2 Age_3 Color_3 \
0 Cat 1 Brown 50cm 2 White 60cm 3 Brown
1 Dog 1 White 99cm 2 White 129cm 3 White
Length_3
0 55cm
1 105cm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.