python - 如何将熊猫数据框转换为元组列表
问题描述
我有一个具有以下结构的数据框
title field1 field2 field3 field4 field5
title1 value11 value12 value13 value14 value15
title1 value21 value22 value23 value24 value25
title1 value31 value32 value33 value34 value35
title2 value1_1 value1_2 value1_3 value1_4 value1_5
title2 value2_1 value2_2 value2_3 value2_4 value2_5
title2 value3_1 value3_2 value3_3 value3_4 value3_5
我想将上面的数据框转换成一个元组列表<String, List of List>,
例如,
title1, [
(value11, value12, value13, value14, value15),
(value21, value22, value23, value24, value25),
(value31, value32, value33, value34, value35)
]
title2, [
(value1_1, value1_2, value1_3, value1_4, value1_5),
(value2_1, value2_2, value2_3, value2_4, value2_5),
(value3_1, value3_2, value3_3, value3_4, value3_5)
]
解决方案
您可以按如下方式使用tuple()
内部 lambda 函数:df.GroupBy.apply()
假设字段列从第二列开始。如果没有,您可以修改下面的列索引范围df.columns[1:]
或显式使用列出下面的列名称:
(df.groupby('title')[df.columns[1:]]
.apply(lambda x: [tuple(y) for y in x.to_numpy()])
.to_dict())
结果:
{'title1': [('value11', 'value12', 'value13', 'value14', 'value15'),
('value21', 'value22', 'value23', 'value24', 'value25'),
('value31', 'value32', 'value33', 'value34', 'value35')],
'title2': [('value1_1', 'value1_2', 'value1_3', 'value1_4', 'value1_5'),
('value2_1', 'value2_2', 'value2_3', 'value2_4', 'value2_5'),
('value3_1', 'value3_2', 'value3_3', 'value3_4', 'value3_5')]}
推荐阅读
- reactjs - 路由参数更改时组件不会重新加载新数据
- php - $_POST 在 ajax 向 php 页面发送请求后返回空数组
- c - 逐行读取文件并捕获该行单词
- android-fragments - 新片段打开后 Kotlin FAB 仍可点击
- java - 使用 java.time 解析具有多种不同格式的日期的 Java 或 Scala 快速方法
- angular-cli - 角度 5 到 7 更新后无法构建产品,更简洁的错误
- java - Spring Boot 2.0 中的 RedisCacheManager.setCacheNames
- android - 我在 bintray 上将库添加到 maven 但无法从 gradle 下载?(安卓)
- asp.net - ASP.NET MVC 视图到控制器动态 javascript
- regex - 自定义模板过滤器:用正则表达式过滤文本替换 HTML 元素(Django 2.1)