将包含列表的 pandas 列“unstack”成多行[重复]

2023-12-07

假设我有以下 Pandas 数据框:

df = pd.DataFrame({"a" : [1,2,3], "b" : [[1,2],[2,3,4],[5]]})
   a          b
0  1     [1, 2]
1  2  [2, 3, 4]
2  3        [5]

我如何“取消堆叠”“b”列中的列表以便将其转换为数据框:

   a  b
0  1  1
1  1  2
2  2  2
3  2  3
4  2  4
5  3  5

从Pandas 0.25.0开始,有内部方法DataFrame.explode(),它就是为此而设计的:

res = df.explode("b")

output

In [98]: res
Out[98]:
   a  b
0  1  1
0  1  2
1  2  2
1  2  3
1  2  4
2  3  5

Pandas 版本 通用矢量化方法 - 也适用于多列 DF:

假设我们有以下 DF:

In [159]: df
Out[159]:
   a          b  c
0  1     [1, 2]  5
1  2  [2, 3, 4]  6
2  3        [5]  7

解决方案:

In [160]: lst_col = 'b'

In [161]: pd.DataFrame({
     ...:     col:np.repeat(df[col].values, df[lst_col].str.len())
     ...:     for col in df.columns.difference([lst_col])
     ...: }).assign(**{lst_col:np.concatenate(df[lst_col].values)})[df.columns.tolist()]
     ...:
Out[161]:
   a  b  c
0  1  1  5
1  1  2  5
2  2  2  6
3  2  3  6
4  2  4  6
5  3  5  7

Setup:

df = pd.DataFrame({
    "a" : [1,2,3],
    "b" : [[1,2],[2,3,4],[5]],
    "c" : [5,6,7]
})

向量化 NumPy 方法:

In [124]: pd.DataFrame({'a':np.repeat(df.a.values, df.b.str.len()),
                        'b':np.concatenate(df.b.values)})
Out[124]:
   a  b
0  1  1
1  1  2
2  2  2
3  2  3
4  2  4
5  3  5

旧答案:

尝试这个:

In [89]: df.set_index('a', append=True).b.apply(pd.Series).stack().reset_index(level=[0, 2], drop=True).reset_index()
Out[89]:
   a    0
0  1  1.0
1  1  2.0
2  2  2.0
3  2  3.0
4  2  4.0
5  3  5.0

或者更好的解决方案由@Boud提供:

In [110]: df.set_index('a').b.apply(pd.Series).stack().reset_index(level=-1, drop=True).astype(int).reset_index()
Out[110]:
   a  0
0  1  1
1  1  2
2  2  2
3  2  3
4  2  4
5  3  5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将包含列表的 pandas 列“unstack”成多行[重复] 的相关文章

  • 雅虎财务请求功能出现 404 客户端错误

    yahoo Financials的请求功能出现404 Client Error 直接点击以下网址没有问题 https finance yahoo com quote AAPL financials p AAPL https finance
  • 查找正在导入哪些 python 模块

    从应用程序中使用的特定包中查找所有 python 模块的简单方法是什么 sys modules是将模块名称映射到模块的字典 您可以检查其键以查看导入的模块 See http docs python org library sys html
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • 使用pathlib获取主目录

    翻看新的pathlib在 Python 3 4 中 我注意到没有任何简单的方法来获取用户的主目录 我能想到的获取用户主目录的唯一方法是使用旧的os path像这样的库 import pathlib from os import path p
  • Python - Unicode 到 ASCII 的转换

    我无法在不丢失数据的情况下将以下 Unicode 转换为 ASCII u ABRA xc3O JOS xc9 I tried encode and decode他们不会这么做 有人有建议吗 Unicode 字符u xce0 and u xc
  • 正在使用 PIL 保存损坏的图像

    我遇到一个问题 操作图像像素导致保存损坏的图像 因此 我使用 PIL 打开图像 然后将其转换为 NumPy 数组 image Image open myimage png np image np asarray image 然后 我转置图像
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • 将 window.location 传递给 Flask url_for

    我正在使用 python 在我的页面上 当匿名用户转到登录页面时 我想将一个变量传递到后端 以便它指示用户来自哪里 发送 URL 因此 当用户单击此锚链接时 a href Sign in a 我想发送用户当前所在页面的当前 URL
  • Python-验证我的文档 xls 中是否存在工作表

    我正在尝试在空闲时间设计一个小程序 加载 xls 文件 然后在要扫描的文档中选择一张纸 步骤1 用户导入 xls文件 导入程序后检查文件是否存在 我能做到的 第 2 步 我要求用户提供要分析的文档表 xls 的名称 这就是它停止的地方 该程
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 无法使用 python rasterio、gdal 打开 jp2 (来自哨兵)

    我试图在 python 中将 jp2 栅格产品作为栅格打开 但当我们使用 raterio 和 gdal 包时没有成功 我收到此错误 RasterioIOError b4 jp2 not recognized as a supported f
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 导入 pandas 显示 ImportError: 无法导入名称哈希表

    我已经在 python 3 3 上安装了 pandas 代码如下 import csv import pandas from pandas import DataFrame csvdata pandas read csv datafile
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 是否可以使用 Anaconda 包作为 Google Cloud Functions 的依赖项?

    我正在使用 Python 运行时编写 Google Cloud Function 我需要包含一些无法使用的依赖项pip 如文档中所述here https cloud google com functions docs writing spe
  • Python 读取未格式化的直接访问 Fortran 90 给出不正确的输出

    这是数据的写入方式 它是一个二维浮点矩阵 我不确定大小 open unit 51 file rmsd nn output form unformatted access direct status replace recl Npoints
  • python中有没有一种方法可以将存储在列表中的正则表达式模式列表应用到单个字符串?

    我有一个正则表达式模式列表 存储在列表类型中 我想将其应用于字符串 有谁知道一个好方法 将列表中的每个正则表达式模式应用于字符串 和 如果匹配 则调用与列表中该模式关联的不同函数 如果可能的话我想用 python 来做这件事 提前致谢 im
  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • 使用 MPI 的 Allreduce 对 Python 对象求和

    我正在使用使用 Python 中的字典和计数器构建的稀疏张量数组操作 我想让并行使用这个数组操作成为可能 最重要的是 我最终在每个节点上都有计数器 我想使用 MPI Allreduce 或另一个不错的解决方案 将其添加在一起 例如 使用计数
  • 使用 pandas 单元格中列表的长度选择行[重复]

    这个问题在这里已经有答案了 我有一张表 df a b c 1 x y x 2 x z c d 3 x t e f g 只是想知道如何使用 c 列的长度选择行 such as df loc len df c gt 1 我知道这是不对的 正确的

随机推荐

  • 如何使用经典 ASP 保存画布图像?

    我有点卡在这里 我知道我可以使用 canvas toDataURL 生成一个 base64 编码的字符串 以传递到我的服务器上的经典 ASP 页面 但我似乎找不到答案的问题是如何处理这些数据 以便我可以将其保存在服务器上的某个位置 因此 通
  • 在谷歌地图叠加层中使用 d3 绘制路径

    我将 d3 js 与谷歌地图一起使用 徒劳地尝试可视化无线覆盖范围 基本思想是地图上的每个点都代表一个接入点 我将使用这些点的 voronoi 图作为覆盖范围等的粗略近似值 所以基于此demo 我有以下内容
  • javascript 事件不适用于使用 json 添加的动态内容

    我陷入了这样一种情况 我的 DOM 元素是基于动态生成的 getJSON该元素的 Javascript 函数不起作用 我将在我的代码中发布一些总体想法 因为我只是在寻找在这种情况下应该做什么的方向 site js包含一般功能 例如 docu
  • 单击按钮启动计时器

    我是 Android 编程新手 但我了解 Java 我的问题是 Android 中的计时器如何工作 我读过最好使用处理程序 我想做的是 您单击一个按钮 计时器就会启动 到单击按钮的那一刻 我一切都清楚了 但如何启动计时器 Android 中
  • 如何在Oracle中拆分逗号分隔的字符串[重复]

    这个问题在这里已经有答案了 如何在Oracle中使用分割逗号分隔的字符串SUBSTR and INSTR 字符串 20 4 12 5 3 5 0 2 0 2 我尝试使用下面的代码 但无法获取第二个逗号后的值 SELECT substr 20
  • C++\GLUT 窗口菜单栏

    我正在编写一个简单的过剩应用程序 我的老师希望我创建一个顶部菜单栏 就像在任何 Windows 应用程序中一样 你知道 文件 编辑等 窗口顶部的标尺 我查看了过剩的文档并用谷歌搜索 我所能找到的只是一个用鼠标右键打开的弹出菜单 不是定义的内
  • Logcat 日志警告/错误

    当我通过 ADB 连接我的 Galaxy s3 mini 并尝试使用 android studio 调试应用程序时 我在 logcat 中收到无尽的错误 警告消息 不间断的消息变得疯狂 这正常吗 通常使用模拟器时 我不会在 logcat 中
  • php的sqlsrv库有类似mysql_real_escape_string的函数吗? [复制]

    这个问题在这里已经有答案了 我正在寻找类似的功能mysql real escape string为了SQLSRV图书馆 具体来说 我很难转义单引号 而不是逃避 像mysql您可以在另一个单引号前面使用一个单引号作为转义方法 我正在努力想出一
  • 循环/反映所有 EF 模型中的所有属性以设置列类型

    我的客户有一个使用decimal 13 4 规范存储SQL Server 小数的标准 结果 在一个非常大且仍在增长的模式中 我有近一百个这样的语句 builder Entity
  • 如何防止窗户被移动?

    我将如何阻止表格被移动 我将表单边框样式设置为 固定单一 并希望保持这种方式 因为它在 vista 中看起来不错 看看这个link 您可能对选项 3 感兴趣 它将要求您包装一些本机代码 但应该可以工作 链接底部还有一条评论 显示了一种更简单
  • Xamarin Forms 日期和时间选择器

    我正在使用 Xamarin Forms 制作跨平台应用程序 我需要创建用户可以选择日期和时间的简单视图 类似于 我要创建的视图我在这里找到的 Xamarin iOS 中的选择器 Android 的解决方案已准备就绪 但我需要在同一应用程序中
  • 如何测试反射得到的Java字段的值是否为null?

    I have Field f this getClass getFields 0 我需要知道是否f的值在this is null或不 有很多方法 例如getInt and getDouble 但我还没有找到类似的方法Object getDa
  • 如何在WP7 / WP8中向本地html页面传递参数?

    有谁知道如何将 url 参数传递到 Web 浏览器控件中的本地页面 当您单独导航到该页面时 Html MyPage html 一切都很好 但是一旦添加参数 Html MyPage html Message Hello 我收到一个错误页面 指
  • 使用struts2和Ajax下载文件时如何放置进度条

    我无法放置进度条 因为它直接重定向页面并下载文件 这么多问题 其中大部分是隐含的 集中在一个问题中 使用struts2和Ajax下载文件时如何放置进度条 如果不需要 不要使用AJAX下载 当您在浏览器中打开文件时 contentDispos
  • 我们可以在棒棒糖设备中显示旧式时间选择器(Pre Lollipop Time Picker)

    我想在棒棒糖设备中显示较旧的时间选择器 例如棒棒糖设备之前的时间选择器 可以 这个是可以的 您可以通过将 timePickerMode 属性设置为 spinner 来指定微调器样式的时间选择器 材质的默认值为 clock
  • 如何计算相对价值再平衡的 if 语句/错误:“系列的真值不明确”

    下面是我编写的代码 用于计算 df a 和 df b 值的相对变化 而 df 是一个数据帧 基本上需要计算的是df c df a df a iloc df d values df d 设置为等于 df t 如果df a df a iloc
  • JavaScript 什么时候是同步的?

    我一直认为 JavaScript 总是异步的 然而 我了解到有些情况并非如此 即 DOM 操作 关于何时同步 何时异步 是否有一个很好的参考 jQuery 对此有影响吗 JavaScript 始终是同步和单线程的 如果您在页面上执行 Jav
  • PHP Foreach 循环和 DOMNodeList

    我试图确定以 DOMNodeList 集合为种子的 foreach 循环的结束 目前 我正在使用 for 循环 希望避免出现 魔术 数字 我确实知道只有 8 列 但我希望代码对其他应用程序通用 是否可以将其转换为 Foreach 循环 我尝
  • 递归地进行更改:如何修改算法以打印所有组合?

    我有一个算法 可以通过以下方式递归地进行更改 public static int makeChange int amount int currentCoin if amount zero we are at the bottom of a
  • 将包含列表的 pandas 列“unstack”成多行[重复]

    这个问题在这里已经有答案了 假设我有以下 Pandas 数据框 df pd DataFrame a 1 2 3 b 1 2 2 3 4 5 a b 0 1 1 2 1 2 2 3 4 2 3 5 我如何 取消堆叠 b 列中的列表以便将其转换