python - Pandas 将多个组融为单列

标签 python pandas dataframe transpose melt

原始数据框:

+----+----------+----------+----------+----------+
| ID |  var1hrs |  var2hrs |  ind1var |  ind2var |
+----+----------+----------+----------+----------+
|  1 |       55 |       45 |      123 |      456 |
|  2 |       48 |       60 |      331 |      222 |
+----+----------+----------+----------+----------+

目标数据框:

+----+------------+------+------+
| ID |    type    |  hrs |  ind |
+----+------------+------+------+
|  1 |  primary   |   55 |  123 |
|  1 |  secondary |   45 |  456 |
|  2 |  primary   |   48 |  331 |
|  2 |  secondary |   60 |  222 |
+----+------------+------+------+

我如何将多组变量融合到一个标签列中?变量名中的“1”表示type=“primary”,“2”表示type=“secondary”。

最佳答案

修改列名后,我们可以使用wide_to_long

df.columns=df.columns.str[:4]
s=pd.wide_to_long(df,['var','ind'],i='ID',j='type').reset_index()
s=s.assign(type=s.type.map({'1':'primary','2':'secondary'})).sort_values('ID')
s

   ID       type  var  ind
0   1    primary   55  123
2   1  secondary   45  456
1   2    primary   48  331
3   2  secondary   60  222

关于python - Pandas 将多个组融为单列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50770021/

相关文章:

python - 未为此客户端启用 AWS Cognito 身份验证 USER_PASSWORD_AUTH 流程

python - 如何在不改变数据帧核心的情况下重新采样数据帧?

r - 识别并标记 r 中的重复行

python - pandas dataframe将函数应用于具有nans的列

python - Mixin类是抽象基类吗

python - 使除以零等于零

python - 通过另一个 DataFrame 中的行将新列映射到 DataFrame

python - 将列表列表插入 pandas df 的单列

python - Pandas - 按时间间隔截断数据帧

python - Pandas 数据框 : select multiple rows based on entries in other rows