美好的一天,
我希望通过分组变量将我的数据帧转换为宽格式。像这样:
Group_var |type |value
1 |11 | 111
1 |12 | 111
2 |22 | 222
3 |33 | 333
3 |34 | 334
3 |35 | 335
转换成以下格式:
Group_var |type_1 |value_1 |type_2 |value_2|type_3 |value_3
1 |11 | 111 |12 | 111 | |
2 |22 | 222 | | | |
3 |33 | 333 |34 | 334 |35 |335
每个 group_var 具有不同数量的值和类型,这使得旋转成为问题。有什么想法如何做到这一点吗?
所以,我想这样的事情是有效的:
import pandas as pd
data = {
'Group_var': [1, 1, 2, 3, 3, 3],
'type': [11, 12, 22, 33, 34, 35],
'value': [111, 111, 222, 333, 334, 335]
}
df = pd.DataFrame(data)
# Group by 'Group_var' and assign a unique column for each type-value pair
df['type_num'] = df.groupby('Group_var').cumcount() + 1
# Pivot the table to wide format
wide_df = df.pivot(index='Group_var', columns='type_num', values=['type', 'value'])
# Flatten the multi-level column index
wide_df.columns = [f'{col[0]}_{col[1]}' for col in wide_df.columns]
# Reset the index to get 'Group_var' as a column
wide_df.reset_index(inplace=True)
print(wide_df)
输出:
Group_var type_1 type_2 type_3 value_1 value_2 value_3
0 1 11.0 12.0 NaN 111.0 111.0 NaN
1 2 22.0 NaN NaN 222.0 NaN NaN
2 3 33.0 34.0 35.0 333.0 334.0 335.0
如果评论不够,需要更多解释或者是否有任何错误,请告诉我。