如何在 Pandas 数据框中展开列

2023-12-14

我有以下熊猫数据框:

import pandas as pd
import numpy as np
df = pd.DataFrame({
               'fc': [100,100,112,1.3,14,125],
               'sample_id': ['S1','S1','S1','S2','S2','S2'],
               'gene_symbol': ['a', 'b', 'c', 'a', 'b', 'c'],
               })

df = df[['gene_symbol', 'sample_id', 'fc']]
df

产生这个:

Out[11]:
  gene_symbol sample_id     fc
0           a        S1  100.0
1           b        S1  100.0
2           c        S1  112.0
3           a        S2    1.3
4           b        S2   14.0
5           c        S2  125.0

我怎样才能传播sample_id所以最后我得到了这个:

gene_symbol    S1   S2
a             100   1.3
b             100   14.0
c             112   125.0

Use pivot or unstack:

#df = df[['gene_symbol', 'sample_id', 'fc']]
df = df.pivot(index='gene_symbol',columns='sample_id',values='fc')
print (df)
sample_id       S1     S2
gene_symbol              
a            100.0    1.3
b            100.0   14.0
c            112.0  125.0

df = df.set_index(['gene_symbol','sample_id'])['fc'].unstack(fill_value=0)
print (df)
sample_id       S1     S2
gene_symbol              
a            100.0    1.3
b            100.0   14.0
c            112.0  125.0

但如果重复,需要pivot_table或聚合groupby or , mean可以改为sum, median, ...:

df = pd.DataFrame({
               'fc': [100,100,112,1.3,14,125, 100],
               'sample_id': ['S1','S1','S1','S2','S2','S2', 'S2'],
               'gene_symbol': ['a', 'b', 'c', 'a', 'b', 'c', 'c'],
               })
print (df)
      fc gene_symbol sample_id
0  100.0           a        S1
1  100.0           b        S1
2  112.0           c        S1
3    1.3           a        S2
4   14.0           b        S2
5  125.0           c        S2 <- same c, S2, different fc
6  100.0           c        S2 <- same c, S2, different fc
df = df.pivot(index='gene_symbol',columns='sample_id',values='fc')

ValueError:索引包含重复条目,无法重塑

df = df.pivot_table(index='gene_symbol',columns='sample_id',values='fc', aggfunc='mean')
print (df)
sample_id       S1     S2
gene_symbol              
a            100.0    1.3
b            100.0   14.0
c            112.0  112.5

df = df.groupby(['gene_symbol','sample_id'])['fc'].mean().unstack(fill_value=0)
print (df)
sample_id       S1     S2
gene_symbol              
a            100.0    1.3
b            100.0   14.0
c            112.0  112.5

EDIT:

用于清洁套装columns name to None and reset_index:

df.columns.name = None
df = df.reset_index()
print (df)
  gene_symbol     S1     S2
0           a  100.0    1.3
1           b  100.0   14.0
2           c  112.0  112.5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Pandas 数据框中展开列 的相关文章

随机推荐

  • ORA-38104: ON 子句中引用的列无法更新 c.emp_id

    我有两张简单的桌子 CREATE TABLE employee emp id INT PRIMARY KEY first name VARCHAR 40 last name VARCHAR 40 birth day DATE sex VAR
  • 迭代n维向量c++

    我想编写自己的代码来迭代 n 维向量 其中维度已知 这是代码 void printing const auto i const int dimension int k dimension for const auto j i if k gt
  • 在 C# 中解析 MS Word 生成的 XML 文件

    所以我有一个客户 这只能来自政府 他有一堆 MS Word 文档 他们想要输入数据库 并且缺乏手动输入 我觉得将它们转换为 XML 并使用实用程序解析它们会是最好的行动方案 我有一个实用程序可以使用 stackoverflow 上找到的代码
  • jquery 中完整日历的弹出窗口

    我需要在 jquery 完整日历中创建事件时显示一个弹出窗口 如 google 日历中的气球弹出窗口 显示为气球并处理点击事件的弹出窗口有什么最好的插件 我用它来从弹出窗口创建 编辑 删除事件 我用过QTip与 fullCalendar 一
  • Rails 3 + Daemons gem:查询模型时出现异常

    作为我的 Rails 项目的一部分 我们将使用守护进程作为消息队列侦听器来执行来自 Rails RESTful Web 服务前端的命令 为了便于原型设计 我们使用 Daemons gem 创建一个非常简单的守护进程 现在 这非常简单 这是代
  • 如何判断一个多边形是否在另一个多边形内部?

    我有一个简单的例子 SVG源 看起来像你可以在下面看到的 这path带有 ID rect2816 中描述的d属性 m 140 53571 188 625 0 148 1875 273 9375 0 0 148 1875 273 9375 0
  • ReactJS如何更新状态

    constructor super this state address street null city null postalCode null postalCodeChange e this setState address post
  • 如果没有进行替换,Python 字符串将在文件中替换,而不触及文件

    如果没有进行字符串替换 Python 的 string replace 返回什么 即使没有进行任何更改 Python 的 file open f w 是否始终会触及文件 使用 Python 我尝试将一组文件中出现的 oldtext 替换为
  • 检测 matplotlib 刻度标签何时重叠

    我有一个由 pandas 生成的 matplotlib 条形图 如下所示 index Label 1 Label 2 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet consect
  • 在图像完全加载之前使用 Javascript 获取图像尺寸

    我读过有关图像完全加载后获取图像尺寸的各种方法 但是一旦开始加载就可以获取任何图像的尺寸吗 我还没有通过搜索找到太多相关信息 这让我相信这是不可能的 但事实是浏览器 在我的例子中是 Firefox 显示了我在标题中的新选项卡中打开的任何图像
  • 通过 docker-compose 运行时,Flask CLI 抛出“OSError: [Errno 8] Exec format error”

    我正在运行一个 Flask 应用程序自定义脚本 无论如何 或者尝试这样做 我使用的是 Windows 10 应用程序应该使用以下命令在 Linux Docker 容器中运行 docker compose up api Docker comp
  • WebForms 自定义/动态路由

    我在用着菲尔 哈克的WebForms 的 URL 路由 我想定义一个 动态 的路由 假设我有这条路线 any aspx 转到 gt PageProcessor aspx 这会将任何非物理页面的请求发送到 PageProcessor 页面 这
  • 如何在Matlab中使用for循环处理大视频并且没有内存错误

    我是 Matlab 处理的新手 我想在 for 循环 或没有它 中读取和处理一个大视频 超过 200k 帧 我特别想 使用VideoReader阅读视频 将视频细分为 n 个纪元 每个纪元 1000 帧 处理 1000 帧的每个 epoch
  • Git - 在线存储库中有未跟踪的文件[重复]

    这个问题在这里已经有答案了 我正在使用 git bitbucket 来控制我的 Linux 配置文件 所有文件都在目录中 cfg 然后我另外还有一些本地配置文件 cfg local 这些应该因机器而异 我想在我的在线存储库中保留本地文件的副
  • Java - for循环终止表达式之间的区别

    我只是好奇 这两个循环实现之间的速度和性能是否有差异 假使 假设size 方法返回处理一组元素的数组 集合或对象的长度 实际上它来自XOM api 实施1 int size someArray size for int i 0 i lt s
  • 如何在 OPENROWSET(BULK...) 中动态指定文件的路径?

    我想将图像插入图像字段 最好使用接受图像路径的存储过程 经过一番折腾后我想出了这个 functional DECLARE parameters nvarchar max DECLARE sql string nvarchar max N U
  • 如何从 ILNumerics 曲面图上鼠标的单击位置找到曲面的 3D 坐标?

    目前 我们的系统使用 ILNumerics 3D 绘图立方体类和 ILNumerics 曲面组件来显示 3D 网格曲面 我们系统的目标是能够通过鼠标单击绘图来询问表面上的各个点 我们在绘图上设置了 MouseClick 事件 问题是我不确定
  • 如何从 R 中的 nls 获取绘图?

    在 R 中 我使用 nls 进行非线性最小二乘拟合 那么如何使用拟合提供的系数值绘制模型函数呢 是的 这是一个very来自 R 相关新手的天真问题 使用第一个例子 nls按照我逐行指出的示例 可以实现以下目标 This is just ou
  • 在 Objective-C 中检查空字符串的正确方法是什么?

    我在我的 iPhone 应用程序中使用了这个 if title nil do something 但它引发了一些异常 并且控制台显示标题为 null 所以我现在用这个 if title nil title isKindOfClass NSN
  • 如何在 Pandas 数据框中展开列

    我有以下熊猫数据框 import pandas as pd import numpy as np df pd DataFrame fc 100 100 112 1 3 14 125 sample id S1 S1 S1 S2 S2 S2 g