python - 如何在 Pandas Dataframe 中将行转换为列
问题描述
我有一个格式如下的数据框:
DF1:原始数据框的形状为 (1200, 9)
这是示例数据框
x1 x2 x3 Group
1.0 0.0 0.0 A
0.0 0.0 0.0 A
0.0 3.0 11.0 A
0.0 0.0 0.0 A
0.0 1.0 0.0 A
0.0 0.0 0.0 E
0.0 0.0 0.0 E
0.0 0.0 0.0 E
0.0 0.0 6.0 E
0.0 0.0 0.0 E
我想要以下格式的输出:
DF_Res:
Group A E
x1 1.0 0.0
x2 0.0 0.0
x3 0.0 0.0
x1 0.0 0.0
x2 0.0 0.0
x3 0.0 0.0
x1 0.0 0.0
x2 3.0 0.0
x3 11.0 0.0
x1 0.0 0.0
x2 0.0 0.0
x3 0.0 6.0
x1 0.0 0.0
x2 1.0 0.0
x3 0.0 0.0
我想转换我的列,使它们成为组,组成为列标题。
请帮忙。
谢谢
解决方案
如果想要聚合值,例如按sum
组:
df1 = df.groupby('Group').sum().T.rename_axis(None, axis=1).rename_axis('Group').reset_index()
print (df1)
Group A E
0 x1 0.0 0.0
1 x2 0.0 0.0
2 x3 0.0 0.0
3 x4 0.0 0.0
4 x5 0.0 0.0
5 x6 0.0 0.0
6 x7 0.0 0.0
7 x8 0.0 0.0
编辑:
df2 = df.set_index('Group').T.rename_axis(None, axis=1).rename_axis('Group').reset_index()
print (df2)
Group A A E E A
0 x1 0.0 0.0 0.0 0.0 0.0
1 x2 0.0 0.0 0.0 0.0 0.0
2 x3 0.0 0.0 0.0 0.0 0.0
3 x4 0.0 0.0 0.0 0.0 0.0
4 x5 0.0 0.0 0.0 0.0 0.0
5 x6 0.0 0.0 0.0 0.0 0.0
6 x7 0.0 0.0 0.0 0.0 0.0
7 x8 0.0 0.0 0.0 0.0 0.0
编辑1:
df = (df.set_index('Group')
.groupby(level=0)
.apply(lambda x: x.stack().reset_index(level=0, drop=True))
.rename_axis(None)
.rename_axis('Group', axis=1)
.T
.reset_index())
print (df)
Group A E
0 x1 1.0 0.0
1 x2 0.0 0.0
2 x3 0.0 0.0
3 x1 0.0 0.0
4 x2 0.0 0.0
5 x3 0.0 0.0
6 x1 0.0 0.0
7 x2 3.0 0.0
8 x3 11.0 0.0
9 x1 0.0 0.0
10 x2 0.0 0.0
11 x3 0.0 6.0
12 x1 0.0 0.0
13 x2 1.0 0.0
14 x3 0.0 0.0
推荐阅读
- octave - I want to stop the code when x is equal to 1
- shell - shell脚本读取一行并逐行处理
- python-3.x - Python - 即使存在也未检测到网络钓鱼数据集文件
- macos - 如何在文件中的任何 `{` 和 `:` 字符中添加换行符
- python - Pycharm 中的解释器设置存在问题
- c# - c# 10000 x 10000 矩阵乘法
- css - Bootstrap 4.6 容器的子级仅使用半页高度
- c++ - 在函数模板中转换为否定的一元表达式失败
- javascript - Visual Studio 代码终端显示一些我不理解的消息
- swift - Swift 包管理器 SecureTransport 错误:连接因错误而关闭 (-1)