我有一个非常大的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单元格。你知道吗
您只需像@Jon提到的那样
df.melt()
调用dataframe上的melt()
,并使用id_vars
参数集对值进行排序。你知道吗阅读article有趣的是它说。。你知道吗
melt
快约30-40%,比lreshape
稍慢,比wide_to_long
快得多。你知道吗使用^{}
如果索引顺序很重要:
相关问题 更多 >
编程相关推荐