在 Pandas DataFrame 中拆分列表

2024-04-28

我有一个包含多列的 csv 文件。使用 pandas,我将此 csv 文件读入数据帧,并有一个日期时间索引和五六个其他列。

其中一列是时间戳列表(下面带有索引的示例)

CreateDate     TimeStamps
4/1/11         [Timestamp('2012-02-29 00:00:00'), Timestamp('2012-03-31 00:00:00'), Timestamp('2012-04-25 00:00:00'), Timestamp('2012-06-30 00:00:00')]
4/2/11         [Timestamp('2014-01-31 00:00:00')]
6/8/11         [Timestamp('2012-08-31 00:00:00'), Timestamp('2012-09-30 00:00:00'), Timestamp('2012-11-07 00:00:00'), Timestamp('2013-01-10 00:00:00'), Timestamp('2013-07-25 00:00:00')]

我想要做的是将时间戳列转换为列出的每个时间戳的单独行。例如,对于第 1 行,它将转换为 4 行,第 2 行将转换为 1 行。我意识到我需要重置索引才能做到这一点,这很好。

我尝试过的所有内容最终都会进入左侧字段(获取值并在 pandas 之外创建一个列表等)

任何建议表示赞赏。


如果你想留在纯熊猫中,你可以添加一个棘手的groupby and apply如果您不计算列重命名,则最终会归结为单行。

In [1]: import pandas as pd

In [2]: d = {'date': ['4/1/11', '4/2/11'], 'ts': [[pd.Timestamp('2012-02-29 00:00:00'), pd.Timestamp('2012-03-31 00:00:00'), pd.Timestamp('2012-04-25 00:00:00'), pd.Timestamp('2012-06-30 00:00:00')], [pd.Timestamp('2014-01-31 00:00:00')]]}

In [3]: df = pd.DataFrame(d)

In [4]: df.head()
Out[4]: 
     date                                                 ts
0  4/1/11  [2012-02-29 00:00:00, 2012-03-31 00:00:00, 201...
1  4/2/11                              [2014-01-31 00:00:00]

In [5]: df_new = df.groupby('date').ts.apply(lambda x: pd.DataFrame(x.values[0])).reset_index().drop('level_1', axis = 1)

In [6]: df_new.columns = ['date','ts']

In [7]: df_new.head()
Out[7]: 
     date         ts
0  4/1/11 2012-02-29
1  4/1/11 2012-03-31
2  4/1/11 2012-04-25
3  4/1/11 2012-06-30
4  4/2/11 2014-01-31

由于目标是获取列的值(在本例中为日期)并对您打算从列表中创建的多行的所有值重复该值,因此考虑 pandas 索引很有用。

我们希望日期成为新行的单个索引,因此我们使用groupby它将所需的行值放入索引中。然后在该操作中我只想分割这个日期的列表,这就是apply会为我们做的。

我路过apply一只熊猫Series它由一个列表组成,但我可以通过.values[0]这推动了唯一的一行Series到具有单个条目的数组。

要将列表转换为一组将传递回索引日期的行,我可以将其设为DataFrame。这会带来额外索引的惩罚,但我们最终会放弃它。我们可以将其本身作为索引,但这会排除重复值。

一旦将其传回,我就有了一个多索引,但我可以通过以下方式将其强制转换为我们想要的行格式reset_index。然后我们只需删除不需要的索引即可。

听起来很复杂,但实际上我们只是利用 pandas 函数的自然行为来避免显式迭代或循环。

速度方面这往往相当不错,因为它依赖于apply任何适用的并行化技巧apply在这里工作。

或者,如果您希望它对多个日期具有鲁棒性,每个日期都有一个嵌套列表:

df_new = df.groupby('date').ts.apply(lambda x: pd.DataFrame([item for sublist in x.values for item in sublist]))

此时,单行代码会变得密集,您可能应该将其放入一个函数中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Pandas DataFrame 中拆分列表 的相关文章

随机推荐

  • Oracle:SQL查询查找属于表的所有触发器?

    我怎样才能找到属于一个表的所有触发器 以下内容将独立于您的数据库权限而工作 select from all triggers where table name YOUR TABLE 以下备用选项可能有效也可能无效 具体取决于您分配的数据库权
  • Android Map API V2 设置自定义 InfoWindow 位置

    我对地图上的所有标记使用 InfoWindowAdapter Api v2 所有标记都清晰可见 问题是我的自定义信息窗口的大小约为 500px 300px 当我触摸地图上的任何点时 它被设置为屏幕中心 因此信息窗口将从顶部裁剪 我的要求是根
  • Ruby RVM apt-get 更新错误

    尝试使用 RVM 安装任何内容时出现以下错误 Searching for binary rubies this might take some time Found remote file https rvm io binaries ubu
  • 如何在nodejs中获取同步readline,或者使用异步“模拟”它?

    我想知道是否有一种简单的方法来获取 同步 readline 或至少在 node js 中获取同步 I O 的外观 我用这样的东西 但它很尴尬 var readline require readline var rl readline cre
  • 如何使元素水平居中?

    如何水平居中 div 在另一个内 div 使用CSS div div Foo foo div div With flexbox水平和垂直居中的 div 样式非常容易 inner border 0 05em solid black outer
  • Android 从另一个未上传文件的应用程序启动 Google Drive 应用程序

    我尝试通过手动启动 Google 驱动器 安装在设备上 从 Android 应用程序上传文件 我尝试使用此发送Intent createChooser其上传文件附件工作正常 但我需要出于特定目的上传文件 例如 Dropbox 仅限 Goog
  • 无法在层次结构中的指定点插入节点”代码:“3

    嘿 又是我问了一个关于 jquery 的问题网格布局 http phase change org jquery gridlayout 我用 switch 制作了一个 php 模板 我插入的代码是这样的 div div div class b
  • 在 Actionscript 3 中实现单例模式类的最佳方法是什么?

    由于 AS3 不允许私有构造函数 因此构造单例并保证构造函数不是通过 new 显式创建的唯一方法是传递单个参数并检查它 我听说过两个建议 一个是检查调用者并确保它是静态 getInstance 另一个是在同一包命名空间中拥有一个私有 内部类
  • 更改工具栏中的标题颜色?

    我有一个使用的工具栏 并设置标题 ActionBarActivity getActivity getSupportActionBar setTitle Home 有没有办法将颜色从黑色更改为白色 我尝试制作自己的主题并将其设置在 xml 中
  • Java邮件,设置回复地址不起作用

    我用java写了一个小的电子邮件发送程序 它有from to and reply to地址 当客户端尝试回复邮件时 应该能够回复reply to地址 目前它不起作用 我的代码如下 File Name SendEmail java impor
  • 在 stackblitz 中找不到包,即使它存在于 npm 网站中。那要怎么安装呢?

    我正在 stackblitz 中安装聚合物应用程序的依赖项 说找不到 3 个包 但 npm 网站上有这些包 我也尝试过cdn 即使这样也行不通 截图 我也安装了来自该网站的 CDN https www jsdelivr com packag
  • 如何使用 Playwright 打开新选项卡(例如,单击按钮在新选项卡中打开新部分)

    我正在寻找针对当前情况的更简单的解决方案 例如 您打开 google 任何其他网站 并且希望通过单击按钮 例如 Gmail 使用 Playwright 在新选项卡中打开此页面 let browser page context describ
  • 如何将钱兑换成零钱

    尝试将输入的数字转换为 25 美分 50 美分 10 美分和 10 分 有几个问题 public class Coins public static void main String args private int quarters di
  • 从 Android 通知中的 URL 加载图像

    在我的 Android 应用程序中 我想动态设置将从 URL 加载的通知图标 为此 我使用了setLargeIcon中的NotificationBuilder的属性receiver 我参考了很多链接并尝试了各种解决方案 但无法获得所需的输出
  • Android 应用程序还需要包含扩展文件下载器吗?

    我的问题是当应用程序大于 50MB 并且必须使用它们时 应用程序是否需要能够下载扩展文件 根据 Android 开发人员帮助 应用程序可以依赖扩展文件 在较新的设备上 扩展文件会在 APK 之前 之后自动下载 而在 较旧的设备 上 开发人员
  • PHP客户端验证https证书

    我需要创建一个 php 来充当客户端并使用 https 下的一些 Web 服务 我的问题是我还想验证服务器证书 我需要知道我有正确的服务器并且中间没有人充当服务器 有人能帮助我吗 Thanks 如果您有curl 扩展 则可以将其配置为验证连
  • 如何防止IntelliJ IDEA删除未使用的包?

    我正在使用 intellij 我的问题是当我开始将一些临时未使用的包导入到我的类文件中时 intellij 会在一秒钟内删除这些行 我怎样才能关闭这个不太好的功能 Disable File Settings Editor General A
  • Xcode:如何创建出现在另一个视图控制器中的弹出视图控制器

    基本上我想做的是 假设我有一个名为 V1 的视图控制器 它内部有一个常规视图和一个按钮 现在 当您点击该按钮时 我希望该按钮创建一个操作 在同一视图控制器 V1 中弹出另一个名为 V2 的视图控制器 V2 的尺寸会缩小一些 使其不会填满整个
  • WPF 中的 InvokeRequired [重复]

    这个问题在这里已经有答案了 我在一个中使用了这个函数Windows forms应用 delegate void ParametrizedMethodInvoker5 int arg private void log left accs in
  • 在 Pandas DataFrame 中拆分列表

    我有一个包含多列的 csv 文件 使用 pandas 我将此 csv 文件读入数据帧 并有一个日期时间索引和五六个其他列 其中一列是时间戳列表 下面带有索引的示例 CreateDate TimeStamps 4 1 11 Timestamp