将 pandas DataFrame 列扩展为多行

2024-03-21

如果我有一个DataFrame这样:

pd.DataFrame( {"name" : "John", 
               "days" : [[1, 3, 5, 7]]
              })

给出这个结构:

           days  name
0  [1, 3, 5, 7]  John

如何将其扩展为以下内容?

   days  name
0     1  John
1     3  John
2     5  John
3     7  John

你可以使用df.itertuples迭代每一行,并使用列表理解将数据重塑为所需的形式:

import pandas as pd

df = pd.DataFrame( {"name" : ["John", "Eric"], 
               "days" : [[1, 3, 5, 7], [2,4]]})
result = pd.DataFrame([(d, tup.name) for tup in df.itertuples() for d in tup.days])
print(result)

yields

   0     1
0  1  John
1  3  John
2  5  John
3  7  John
4  2  Eric
5  4  Eric

迪瓦卡的解决方案 https://stackoverflow.com/a/38203702/190597, using_repeat,最快:

In [48]: %timeit using_repeat(df)
1000 loops, best of 3: 834 µs per loop

In [5]: %timeit using_itertuples(df)
100 loops, best of 3: 3.43 ms per loop

In [7]: %timeit using_apply(df)
1 loop, best of 3: 379 ms per loop

In [8]: %timeit using_append(df)
1 loop, best of 3: 3.59 s per loop

以下是用于上述基准测试的设置:

import numpy as np
import pandas as pd

N = 10**3
df = pd.DataFrame( {"name" : np.random.choice(list('ABCD'), size=N), 
                    "days" : [np.random.randint(10, size=np.random.randint(5))
                              for i in range(N)]})

def using_itertuples(df):
    return  pd.DataFrame([(d, tup.name) for tup in df.itertuples() for d in tup.days])

def using_repeat(df):
    lens = [len(item) for item in df['days']]
    return pd.DataFrame( {"name" : np.repeat(df['name'].values,lens), 
                          "days" : np.concatenate(df['days'].values)})

def using_apply(df):
    return (df.apply(lambda x: pd.Series(x.days), axis=1)
            .stack()
            .reset_index(level=1, drop=1)
            .to_frame('day')
            .join(df['name']))

def using_append(df):
    df2 = pd.DataFrame(columns = df.columns)
    for i,r in df.iterrows():
        for e in r.days:
            new_r = r.copy()
            new_r.days = e
            df2 = df2.append(new_r)
    return df2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pandas DataFrame 列扩展为多行 的相关文章

  • 配置 PIP 以在代理后面工作

    我已经安装了 python 3 4 3 附带pip 我想从代理后面使用 pip 所以我执行了以下操作 Created C Users foo pip pip ini并添加了代理配置部分 proxy export http proxy my
  • Native TF 与 Keras TF 性能比较

    我使用本机和后端张量流创建了完全相同的网络 但在使用多个不同参数进行了多个小时的测试后 仍然无法弄清楚为什么 keras 优于本机张量流并产生更好 稍微但更好 的结果 Keras 是否实现了不同的权重初始化方法 或者执行除 tf train
  • 将 geojson 文件下载到 jupyter 中的 folium 中

    我想要一张欧洲地图 作为 json 文件 这样我就可以使用 geojson 将其作为图层放置在 Folium 地图上 这样我就可以将我的数据集嵌入到其中 以显示欧洲哪个国家的酒精含量最高 我在从 GitHub 获取 json 文件以在 jy
  • Python 正则表达式从文本中提取域

    我有以下正则表达式 r a zA Z0 9 a zA Z0 9 61 a zA Z0 9 a zA Z 2 6 当我将其应用于文本字符串时 比方说 这是 www website1 com 这是 website2 com 我得到 www we
  • Python 错误:将 statsmodels 与一行数据一起使用时,对象的 len() 未调整大小

    我可以使用 statsmodel 的 WLS 加权最小二乘回归 http statsmodels sourceforge net devel generated statsmodels regression linear model WLS
  • 打开文件路径在 python 中不起作用[重复]

    这个问题在这里已经有答案了 我正在编写一个数据库程序 personica 是我的测试主题 我通常在文件路径的位置有一个变量 但出于测试和演示的目的 我只有一个字符串 在我的计算机上的这个确切位置有一个文本文件 顺便说一句 因为我很偏执 所以
  • NLTK:包错误?朋克和泡菜?

    基本上 我不知道为什么会收到此错误 只是为了获得更多图像 这里有一个代码格式的类似消息 由于是最新的 该帖子的答案已经在消息中提到 Preprocessing raw texts LookupError Traceback most rec
  • seaborn 箱线图的子图

    我有一个像这样的数据框 import seaborn as sns import pandas as pd pylab inline df pd DataFrame a one one two two one two one one one
  • 统计Sweep算子的Python实现

    我正在学习一些用书中缺失的数据进行统计的技术 缺失数据的统计分析作者 利特尔和鲁宾 对于处理单调无响应数据来说 一个特别有用的函数是扫频操作员 详情见第 148 151 页 我知道 R 模块gmm有swp函数可以做到这一点 但我想知道是否有
  • Python3 - 如何将字符串转换为十六进制

    我正在尝试将字符串逐个字符转换为十六进制 但我无法在Python3中弄清楚它 在较旧的 python 版本中 我的以下内容有效 test This is a test for c in range 0 len test print 0x s
  • 无法使用 wxPython 打开在 folium 中生成的本地 HTML 文件

    我目前正在尝试将 GPS 坐标绘制为地图上的标记 并在 wxPython 中显示结果 我使用 folium 绘制坐标标记并生成 HTML 文件 import folium fmap folium Map 43 5321 172 6362 z
  • NumPy 根据另一个数组中的值对第三个数组中的每个匹配元素求和一个数组

    我有两个 numpy 数组 一个包含值 另一个包含每个值类别 values np array 1 2 3 4 5 6 7 8 9 10 valcats np array 101 301 201 201 102 302 302 202 102
  • 自动创建带有文件输出的目录[重复]

    这个问题在这里已经有答案了 假设我想制作一个文件 filename foo bar baz txt with open filename w as f f write FOOBAR 这给出了一个IOError since foo bar不存
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 如果任何单元测试失败,如何使 Python 的覆盖率工具失败?

    我想使用 shell 脚本来确保我的单元测试通过and我的代码有足够的测试覆盖率 我只想运行我的测试代码once 我希望我可以通过coverage https coverage readthedocs io 工具和单次运行的工具 如果一项或
  • AppEngine 警告 - OpenBLAS 警告 - 无法确定该系统上的 L2 缓存大小

    我尝试在 GC AppEngine 上部署应用程序 部署过程中没有错误 但应用程序无法运行 仅显示加载页面 日志中唯一一个奇怪的原始日志 OpenBLAS WARNING could not determine the L2 cache s
  • Python:Factory Boy 生成对象创建时指定长度的列表

    我正在尝试使用 Factoryboy 在创建时指定长度的对象中创建一个列表 我可以创建列表 但由于提供的长度 大小的惰性性质 每次尝试创建具有指定长度的列表都会导致问题 这是我到目前为止所拥有的 class FooFactory facto
  • Hoare Partitioning算法讲解

    根据许多网站给出的伪代码 我写了这个Hoare分区算法 它采用一个数组 根据给定的主元来分区子数组的开始和结束索引 它工作得很好 但是有人可以解释一下逻辑 它是如何做到这一点的吗 这是代码 def hoare arr start end p
  • Pandas 数据框可对多列和要列出的值进行字典

    我有一个数据框 id key a1 1 a2 1 a3 1 a4 2 a5 2 a6 3 我想创建一本字典key作为机器号 并且id列作为列表 like 1 a1 a2 a3 2 a4 a5 3 a6 我可以先使用 groupby 然后再使
  • 如何使用 PySpark 预处理图像?

    我有一个项目 需要为 1 设置大数据架构 AWS S3 SageMaker 的概念验证使用 PySpark 预处理图像 2 执行 PCA and 3 训练一些机器或深度学习模型 我的问题是了解如何使用 PySpark 操作图像数据 但无法在

随机推荐

  • symfony:如何设置不同环境的配置参数文件?

    如何为每个环境设置不同的配置参数文件 目前参数在parameters yml两者都使用dev and prod环境 但我需要不同的参数才能在产品中部署我的应用程序 您可以将所有使用的参数放入dev环境在一个app config parame
  • Postgresql计数+排序性能

    我使用 postgresql 和 psycopg2 构建了一个小型库存系统 一切都很好 除了当我想创建内容的聚合摘要 报告时 由于 count 和排序 我的性能非常糟糕 数据库架构如下 CREATE TABLE hosts id SERIA
  • 如何更新 Kubernetes 中的 api 版本列表

    我尝试在我的配置中使用 autoscaling v2beta2 apiVersion 如下本教程 https kubernetes io docs tasks run application horizontal pod autoscale
  • Perl 中的简单并行处理

    我在某个对象的函数内有一些代码块 它们可以并行运行并加快速度 我尝试使用subs parallel通过以下方式 所有这些都在函数体内 my is a done parallelize block a do some work return
  • 意外的 T_ENCAPSED_AND_WHITESPACE,期待 T_STRING 或 T_VARIABLE 或 T_NUM_STRING 错误 [重复]

    这个问题在这里已经有答案了 我对这个错误一直茫然 似乎不知道问题是什么 当我运行查询时 我收到此错误 意外的 T ENCAPSED AND WHITESPACE 需要 T STRING 或 T VARIABLE 或 T NUM STRING
  • 带 Bootstrap 的 Google 地图没有响应

    我正在使用 bootstrap 并嵌入了 Google Maps API 3 map canvas没有反应 它是固定宽度 另外 如果我使用height auto and width auto地图未显示在页面中 Why div class c
  • PyTorch - 参数不变

    为了了解 pytorch 的工作原理 我尝试对多元正态分布中的一些参数进行最大似然估计 然而 它似乎不适用于任何协方差相关的参数 所以我的问题是 为什么这段代码不起作用 import torch def make covariance ma
  • Flexdashboard多属性页面

    我正在学习 flexdashboard 并为未来的应用程序尝试一些不同的布局 但我无法为同一页面分配不同的属性 我希望第二页有一个行布局 列在导航栏 A 中 并在标题前面有一个图标 当我这样写时 data orientation rows
  • 在SSMS中将存储过程结果集导出到Excel

    我正在使用 SSMS 并尝试将存储过程的结果导出到新的 Excel 文件 SP 接受 int 参数 但我找不到在查询中调用它的方法 最新努力 EXEC sp makewebtask outputfile C Users me Documen
  • PHP手机浏览器检测?

    我需要一种在服务器端检测移动浏览器的方法 我想要一种不需要我做太多设置和维护的方法 但仍然可以为我提供 至少 Android Mobile Safari 和 Blackberry 浏览器以及 Opera 等替代浏览器的准确检测 我希望至少有
  • 使 jqGrid 可移动

    看起来 jqGrid 是基于 jQuery 对话框的 是否有可能使其可移动 像对话框一样 我已经能够将它放在对话框中 但有两个标题栏等看起来很奇怪 我 认为 可以向其中添加必要的类以使其可移动 但我对 jQuery 和 jqGrid 仍然相
  • Firebase Firestore JavaScript:查找未设置字段的文档

    在 Firebase Firestore 中 我可以查询未设置特定字段的文档吗 我知道如果我这样做 collectionReference where requires null 不会做我想做的事null是根本不同的 undefined驱动
  • 使用 JavaScript 创建 Powerpoint

    JavaScript 无法在客户端文件系统上本地创建文件 但是 我想知道是否可以通过某种 JSON 在网页 div 或 iframe 中以某种方式创建 Powerpoint MIME 然后让 UserAgent 找出它是 Powerpoin
  • iOS Safari HTML 表单下一个/上一个按钮 - 它们如何工作?

    免责声明 我正在使用 JQuery Mobile 我有一堆带有不同表单的页面 但其中一些页面在按下下一个 上一个按钮时似乎表现出不同的行为 所有表单都设置了选项卡索引 Form 1 工作完美 只是它跳过了 JQuery Mobile 翻转开
  • 在 Visual Studio 2008 中合并时强制比较文件

    目前 当我在 Visual Studio 2008 中右键单击 gt 合并特定文件时 它会尝试 并且通常会成功 自动将该文件合并到我指定的目标 如何强制 VS 始终允许我在合并工具中手动比较和合并文件 我应该提到我的源代码管理是 TFS 这
  • 红宝石脱轨

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 有时感觉我的公司是世界上唯一一家使用Ruby而不使用Ruby on Rails的公司 以至于R
  • 如何从 perl6 调用 Java 方法

    use java util zip CRC32 from
  • 在 Google 应用引擎上部署失败

    我有一个java应用程序 spring mvc jpa 我正在尝试将其部署在谷歌应用程序引擎上 由于某种原因 部署完成后出现以下错误 20 扫描本地磁盘上的文件 25 正在启动更新 错误详情 2011 年 2 月 26 日上午 10 43
  • 我们可以优化代码来降低功耗吗?

    有没有什么技术可以优化代码以确保更低的功耗 架构是ARM 语言是C 来自 ARM 技术参考网站 ARM11 MPCore 的特性 提高能源效率的处理器 效率包括 准确的分支和子程序返回预测 减少数量 错误的指令获取和 解码操作 使用物理寻址
  • 将 pandas DataFrame 列扩展为多行

    如果我有一个DataFrame这样 pd DataFrame name John days 1 3 5 7 给出这个结构 days name 0 1 3 5 7 John 如何将其扩展为以下内容 days name 0 1 John 1 3