python - 数据帧结构操作
问题描述
我有一个非常大的 csv 文件,其中包含超过 10 万条记录。
其中,每条记录是一个具有 id 和大约 20~30 个属性的对象。
我需要对其进行操作,因此每条记录都是 id 的三元组,没有空属性和一个值。
我创建了一个简单数据框的示例来举例说明。
给定以下数据框:
data = [{'id': 1, 'shape': 'circle', 'size': 10, 'color':'green'},
{'id': 2, 'shape': 'square', 'color':'pink'},
{'id': 3, 'shape': 'triangle', 'size': 5, 'color': 'black'},
{'id': 4, 'shape': 'pentagon', 'size': 25}]
df = pd.DataFrame(data)
df
Out[10]:
color id shape size
0 green 1 circle 10.0
1 pink 2 square NaN
2 black 3 triangle 5.0
3 NaN 4 pentagon 25.0
有没有获得结果的有效方法?它应该如下所示:
Out[17]:
id property value
0 1 shape circle
1 1 size 10
2 1 color green
3 2 shape square
4 2 color pink
5 3 shape triangle
6 3 size 5
7 3 color black
8 4 shape pentagon
9 4 size 25
当然,应该跳过 NaN 单元。
解决方案
pd.melt(df,id_vars='id',var_name='Property').dropna().sort_values('id')
id Property value
0 1 color green
4 1 shape circle
8 1 size 10
1 2 color pink
5 2 shape square
2 3 color black
6 3 shape triangle
10 3 size 5
7 4 shape pentagon
11 4 size 25
如果索引顺序很重要:
>>pd.melt(df,id_vars='id',var_name='Property').dropna().sort_values('id').reset_index(drop=True)
id Property value
0 1 color green
1 1 shape circle
2 1 size 10
3 2 color pink
4 2 shape square
5 3 color black
6 3 shape triangle
7 3 size 5
8 4 shape pentagon
9 4 size 25
推荐阅读
- r - R 图形在使用 Microsoft Office 打印为 PDF 时损坏
- python - python字典查找值返回错误结果
- mysql - 使用 Select 查询插入
- javascript - 使用把手进行迭代时出现 Rowspan 错误
- node.js - 在nodejs中同步For循环?
- c# - 如何使用 .Net Client SDK 从 Microsoft Graph 获取我所属的管理员角色?
- javascript - 验证 ajax 发送的 blob 图像
- javascript - 如何使用 webpack + react 渲染图像?
- sql-server - TSQL Have 子句在条件下未按预期执行
- php - 如何从数据库中填充文本框中的下拉选定值