python - 在 pandas 中将数据从行旋转到具有特定结构的列

标签 python pandas

鉴于以下数据:

    var_1   var_2   var_3
0     5.0     7.0     3.0
1     4.0     5.0    10.0
2     4.0     9.0     7.0
3     9.0    10.0     4.0
4     4.0     9.0     3.0

输出应该是:

     var_3   var_4   var_5   var_7   var_9   var_10
0       3       0       1       2       0        0
1       0       1       2       0       0        3
2       0       1       0       3       2        0
3       0       3       0       0       1        2
4       3       1       0       0       2        0

这不是一个典型的枢轴,尽管可以使用像 iterrows 这样的东西来完成,但我觉得应该有更好的方法。

发生的情况是行中的值用于列,列后缀用于单元格值。

编辑

这个问题正好包含回答它所需的信息 - 关闭它对我来说毫无意义,因此我们将不胜感激。

最佳答案

首先通过 rename_ 之后的值获取新列名称,通过 DataFrame.melt 取消透视,将 value 添加到索引 DataFrame.set_index并通过 Series.unstack reshape ,最后一些数据列清理:

f = lambda x: int(x.split('_')[1])
df = (df.rename(columns=f)
        .melt(ignore_index=False)
        .set_index('value', append=True)['variable']
        .unstack(fill_value=0)
        .rename(columns=int)
        .add_prefix('var_')
        .rename_axis(None, axis=1))
print (df)
   var_3  var_4  var_5  var_7  var_9  var_10
0      3      0      1      2      0       0
1      0      1      2      0      0       3
2      0      1      0      3      2       0
3      0      3      0      0      1       2
4      3      1      0      0      2       0

关于python - 在 pandas 中将数据从行旋转到具有特定结构的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65235713/

相关文章:

python - 如何绘制按日期 pandas 数据框聚合的图表

python - 检测时间序列的快速增长

python - 如何使用 .whl 文件调用 pyspark 代码?

Python tkinter网格布局问题

python - django:覆盖 get_Form 内联

python - 为什么连接两个数据帧时样本大小不同?

python - Pystache 无需转义(未转义)

python - 如何访问 Pandas 系列中的最后一个元素

python - Pandas applymap内存错误

python - 在 pandas 中绘制部分堆积条形图