gpt4 book ai didi

python - 数据帧结构操作

转载 作者:太空狗 更新时间:2023-10-30 02:24:19 26 4
gpt4 key购买 nike

我有一个非常大的 csv 文件,其中包含超过 100k 条记录。
其中,每条记录都是一个对象,有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()

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

关于python - 数据帧结构操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54275627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com