pandas - Pandas:将一行转换为一列,并将所有其他条目作为第二列
问题描述
我有一个像这样的熊猫数据框:
Col1 Col2 Col3 Col4
control x1 x2 x3 x4
obs1 o11 o12 o13 o14
obs2 o21 o22 o23 o24
...
obsn on1 on2 on3 on4
我想将其重塑如下(不需要列标题):
control Observation
1 x1 o11
2 x1 o12
3 x1 o13
...
m xk ok1
m+1 xk ok2
...
我该怎么做?
解决方案
您可以选择您的“控制”行并使用它来设置您的列,set_axis
从那里它是一个简单的melt
.
sort_values
和在reset_index
功能上不是必需的,但它们dataframe
与您的预期输出一致,因此我将它们包括在此处:
control = df.loc["control", :]
observations = df.drop("control")
out = (observations.set_axis(control, axis=1)
.melt(value_name="observation")
.sort_values("observation")
.reset_index(drop=True))
print(out)
control observation
0 x1 o11
1 x2 o12
2 x3 o13
3 x4 o14
4 x1 o21
5 x2 o22
6 x3 o23
7 x4 o24
推荐阅读
- postgresql - 使用scala将变量从Spark传递给Postgresql
- elasticsearch - 在 GKE 上从 filebeat 接收日志到 ECK
- android - MVVM 平均 Fragment 膨胀时间以及如何提高性能
- sql-server - 有没有办法使用 cloudformation 从 S3 恢复 RDS 中的 SQL Server 备份?
- powershell - 如何在 GitLab CI YAML 文件中包含 PowerShell 脚本文件
- swift - 应用程序启动时 NSButton 出现意外的色调
- sql-server - 更新多个 Azure Sql 数据库
- python - Django 是否自动 URL 解码值
- microsoft-graph-api - Graph beta Teams Channels 文件文件夹属性问题
- c# - 使用日期时间选择器从字符转换日期和/或时间时 C# 转换失败