将 pandas 列表数据框转换为数据框字典

2024-04-18

我有一个数据框(带有 DateTime 索引),其中一些列包含列表,每个列表有 6 个元素。

In: dframe.head()
Out: 
                           A                                        B  \
timestamp                                                                
2017-05-01 00:32:25        30  [-3512, 375, -1025, -358, -1296, -4019]   
2017-05-01 00:32:55        30  [-3519, 372, -1026, -361, -1302, -4020]   
2017-05-01 00:33:25        30  [-3514, 371, -1026, -360, -1297, -4018]   
2017-05-01 00:33:55        30  [-3517, 377, -1030, -363, -1293, -4027]   
2017-05-01 00:34:25        30  [-3515, 372, -1033, -361, -1299, -4025]   
                                                      C           D
timestamp                                                             
2017-05-01 00:32:25  [1104, 1643, 625, 1374, 5414, 2066]      49.93   
2017-05-01 00:32:55  [1106, 1643, 622, 1385, 5441, 2074]      49.94   
2017-05-01 00:33:25  [1105, 1643, 623, 1373, 5445, 2074]      49.91   
2017-05-01 00:33:55  [1105, 1646, 620, 1384, 5438, 2076]      49.91   
2017-05-01 00:34:25  [1104, 1645, 613, 1374, 5431, 2082]      49.94   

我有一本字典dict_of_dfs我想用 6 个数据框填充,

dict_of_dfs = {1: df1, 2:df2, 3:df3, 4:df4, 5:df5, 6:df6}

哪里的ith数据框包含ith每个列表中的项目,因此字典中的第一个数据帧将是:

In:df1
Out: 
                            A          B      C        D
    timestamp                                                                
    2017-05-01 00:32:25        30  -3512   1104    49.93
    2017-05-01 00:32:55        30  -3519   1106    49.94
    2017-05-01 00:33:25        30  -3514   1105    49.91
    2017-05-01 00:33:55        30  -3517   1105    49.91
    2017-05-01 00:34:25        30  -3515   1104    49.94

等等。 实际的数据帧具有比这更多的列和数千行。 最简单、最Python的转换方法是什么?


您可以使用字典理解assign http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.assign.html对于选择的值lists use str[0], str[1]:

N = 6
dfs = {i:df.assign(B=df['B'].str[i-1], C=df['C'].str[i-1]) for i in range(1,N + 1)}

print(dfs[1])
             timestamp   A     B     C      D
0  2017-05-01 00:32:25  30 -3512  1104  49.93
1  2017-05-01 00:32:55  30 -3519  1106  49.94
2  2017-05-01 00:33:25  30 -3514  1105  49.91
3  2017-05-01 00:33:55  30 -3517  1105  49.91
4  2017-05-01 00:34:25  30 -3515  1104  49.94

另一个解决方案:

dfs = {i:df.apply(lambda x: x.str[i-1] if type(x.iat[0]) == list else x) for i in range(1,7)}

print(dfs[1])
             timestamp   A     B     C      D
0  2017-05-01 00:32:25  30 -3512  1104  49.93
1  2017-05-01 00:32:55  30 -3519  1106  49.94
2  2017-05-01 00:33:25  30 -3514  1105  49.91
3  2017-05-01 00:33:55  30 -3517  1105  49.91
4  2017-05-01 00:34:25  30 -3515  1104  49.94

Timings:

df = pd.concat([df]*10000).reset_index(drop=True)

In [185]: %timeit {i:df.assign(B=df['B'].str[i-1], C=df['C'].str[i-1]) for i in range(1,N+1)}
1 loop, best of 3: 420 ms per loop

In [186]: %timeit {i:df.apply(lambda x: x.str[i-1] if type(x.iat[0]) == list else x) for i in range(1,7)}
1 loop, best of 3: 447 ms per loop

In [187]: %timeit {(i+1):df.applymap(lambda x: x[i] if type(x) == list else x) for i in range(6)}
1 loop, best of 3: 881 ms per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pandas 列表数据框转换为数据框字典 的相关文章

随机推荐

  • 多个水豚等待时间?

    我想要有不一样的Capybara我的代码中的等待时间取决于它们通常需要多长时间才能完全加载 我是否必须重复不断地改变Capybara default wait time或者 还有更好的方法 您可以使用使用等待时间 秒 http rubydo
  • 将recvfrom() 与原始套接字一起使用:一般疑问

    我创建了一个原始套接字 它从数据链路层获取所有 IPv4 数据包 删除了数据链路层标头 为了读取我使用的数据包recvfrom 我的疑问是 假设由于操作系统进行了一些调度 我的进程休眠了 1 秒 当它醒来时 它做到了recvfrom 要接收
  • 使用 SSLSocket 的 SOCKS5 代理

    我有一个客户端 服务器应用程序 它通过 Java 的 SSLSocket 远程连接到服务器 我正在尝试实现一种可选模式 通过经过身份验证的 SOCKS v5 代理启用连接 我尝试使用相关教程 http download oracle com
  • 设置目录和子项的权限

    我的程序将一些目录 子目录和文件从服务器复制到本地计算机 我需要 每个本地用户都可以修改它 编辑 删除 删除 重命名 但现在它只能做所有者 如何为复制的目录及其子项目设置必要的权限 我尝试这样的代码 String account Path
  • 关闭 UIScrollView 中的键盘

    好吧 我有几个UITextFields and UITextViews里面一个UIScrollView 我想将键盘设置为消失scrollview被触摸或滚动 当然 当您触摸文本字段 视图内时除外 我目前的尝试是替换UIScrollView与
  • 如何使用 PDO 从 MySQL 获取数字类型?

    我正在使用 PDO 和 MySQL 由于某种原因 当从数据库获取 int 类型的值时 PDOStatement 返回数字的字符串表示形式 而不是数字类型的值 我该如何防止这种情况发生 我注意到 PDO 类有一个属性 PDO ATTR STR
  • jSoup 从 类获取文本

    我有一部分 HTML 文件 格式如下 h6 class uiStreamMessage span class messageBody Welcome span h6 在该文件中 还有其他跨度类 但我只想获取所有 messageBody 范围
  • Castle Windsor 或 Spring.NET - 优点和缺点 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在android中比较两个图像

    在我的应用程序中 我想使用相机捕获两个图像 然后我想比较这些图像 那么 如何比较两个图像呢 编辑 比较第一幅图像与第二幅图像的像素到像素完全相同 谢谢 1 检查高度是否匹配 如果不匹配则返回 false 然后 检查宽度是否匹配 如果不匹配
  • 如何获取从现在到未来时间的月数、周数、天数和小时数?

    我需要使用 Java 找出从现在到未来时间还剩多少月 周 天和小时 我不能使用像 Joda 这样的第三方库 我怎样才能只使用 JDK 类来做到这一点 到目前为止 这就是我想到的 除了某些情况之外 它有点有效 public class Dat
  • Hadoop 构建在 Windows 中失败:native.sln 中缺少 zconf.h?

    我正在尝试在使用 Windows 10 家庭版的开发计算机上构建以下 hadoop 版本 hadoop 2 7 3 src 以下是我本地开发环境的详细信息 Windows 10家庭版 英特尔酷睿 i5 6200U CPU 2 30GHz 内
  • 在某些 Android 设备中,Cordova 不会根据请求发送来源

    这是在某些 Android 设备上发生的问题 我有一个Samsung Galaxy A5 2017 与谷歌Chrome version 76 0 3809 89和 Android 版本 8 0 0 当我第一次在此设备上部署 Cordova
  • PopupMenuItem Click 和 MouseOver 的区别

    当菜单项有一个子菜单时 鼠标悬停在展开子菜单时会触发单击事件 这个点击事件和用户实际点击有什么区别吗 我使用 TPopupMenu 作为 cxButton 的下拉属性 EDIT德尔福2007 不确定这是否适用于 D2007 在 D7 中也是
  • 使用自定义 JsonConverter 来更改对象部分的序列化

    我很难重写自定义 JsonConverter 的 WriteJson 方法 以便稍微改变序列化的执行方式 我需要调用一个 REST 服务 该服务接受具有通用部分的特定输入 我可以使用以下有效负载格式重现我遇到的问题 public seale
  • 在 matplotlib python 中找到与 y 轴相对应的 x 轴值

    我正在尝试执行简单的任务 例如读取与 matplotlib 中 y 轴的值相对应的 x 轴的值 但我看不出出了什么问题 在这种情况下 我感兴趣的是 例如 如果我选择 x 2 0 我会得到 y 轴的哪个值 但我得到idx即使有数字 2 元组也
  • 在 WordPress 上建立数据库连接时出错

    我有一个 WordPress 博客 但是有时我对此有疑问 我遇到了打击错误 建立数据库连接时出错这要么意味着您的用户名和密码信息wp config php文件不正确或者我们无法联系数据库服务器 s 这可能意味着您主机的数据库服务器已关闭 如
  • 将动画 GIF 叠加在 MapView 上

    我一直在绞尽脑汁地试图让这个看似简单的任务发挥作用 我需要将一个动画 gif 放在地图视图上的叠加层中 我有以下代码 AnimationDrawable anim AnimationDrawable getResources getDraw
  • 在 Android 4.2 中写入全局设置

    Android 4 2引入了一个新类 设置 全局 http developer android com reference android provider Settings Global html 现在保存了一些以前的设置设置 安全 ht
  • 如何使用 Clockwork Rails 调度程序 Gem?

    我在 Clockwork 调度程序进程的语法方面遇到问题 实际上 我遇到了与此线程中讨论的类似问题 但从未完全回答 如何使用 Rails Clockwork gem 运行 rake 任务 https stackoverflow com qu
  • 将 pandas 列表数据框转换为数据框字典

    我有一个数据框 带有 DateTime 索引 其中一些列包含列表 每个列表有 6 个元素 In dframe head Out A B timestamp 2017 05 01 00 32 25 30 3512 375 1025 358 1