python - Pandas 'partial melt' 或 'group melt'

标签 python pandas unpivot melt

我有一个这样的DataFrame

>>> df = pd.DataFrame([[1,1,2,3,4,5,6],[2,7,8,9,10,11,12]], 
                      columns=['id', 'ax','ay','az','bx','by','bz'])
>>> df
   id  ax  ay  az  bx  by  bz
0   1   1   2   3   4   5   6
1   2   7   8   9  10  11  12

我想把它改造成这样的东西

   id name   x   y   z
0   1    a   1   2   3
1   2    a   7   8   9
2   1    b   4   5   6
3   2    b  10  11  12

这是一个逆轴/融化问题,但我不知道有什么方法可以通过保持这些组的完整性来融化。我知道我可以在原始数据帧上创建投影,然后 concat 那些,但我想知道我是否遗漏了我的工具带中的一些常见融化技巧。

最佳答案

set_index,将列转换为多索引并堆叠,

df = df.set_index('id')
df.columns = [df.columns.str[1], df.columns.str[0]]
new_df = df.stack().reset_index().rename(columns = {'level_1': 'name'})

    id  name    x   y   z
0   1   a       1   2   3
1   1   b       4   5   6
2   2   a       7   8   9
3   2   b       10  11  12

关于python - Pandas 'partial melt' 或 'group melt',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55403008/

相关文章:

sql - 在 PostgreSQL 中将列数据转换为行

python - GridSpec 轴调整大小

python - 计算每个用户每月的平均收入

python - 将 Dask DataFrame 存储为 pickle

SQL:是否有一种巧妙的方法可以在不使用内部查询或聚合函数的情况下在数据透视列中显示文本数据?

MySQL - 如何将列转为行?

python - Pandas:如何将新列附加到数据框中的所有行

python - Python中是否有像TensorFlow的tf.image.resize_images函数那样调整图像大小的resize函数?

python - Django - 如何使用带有 'if' 和 'else' 检查的自定义模板标签?

python - 如何防止 pandas 数据框中的索引显示在 Excel 中?