Tho*_*muf 5 python dataframe pandas
我有一个数据框,它看起来像:
0 target_year ID v1 v2
1 2000 1 0.3 1
2 2000 2 1.2 4
...
10 2001 1 3 2
11 2001 2 2 2
Run Code Online (Sandbox Code Playgroud)
我想要以下输出:
0 ID v1_1 v2_1 v1_2 v2_2
1 1 0.3 1 3 2
2 2 1.2 4 2 2
Run Code Online (Sandbox Code Playgroud)
你知道怎么做吗?
您可以使用pd.pivot_table, 使用GroupBy.cumcountofID作为列。
然后我们可以使用列表理解f-strings将MultiIndex标题合并到一个单一级别:
cols = df.groupby('ID').ID.cumcount() + 1
df_piv = (pd.pivot_table(data = df.drop('target_year', axis=1)[['v1','v2']],
index = df.ID,
columns = cols)
df_piv.columns = [f'{i}_{j}' for i,j in df_piv.columns]
v1_1 v1_2 v2_1 v2_2
ID
1 0.3 3.0 1 2
2 1.2 2.0 4 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |