gpt4 book ai didi

python - 将逗号分隔值从 mysql 加载到 python 中的数据框

转载 作者:行者123 更新时间:2023-11-30 21:36:27 24 4
gpt4 key购买 nike

我需要将类似 csv 格式的数据从 mysql 数据库加载到 python 数据框中。

数据库中的数据结构如下:

|-----------|-------------------------------------|
| part_no | property |
|-----------|-------------------------------------|
| 1 | eges,4;volume,532 |
| 2 | eges,8;color,red |
| 3 | material,wood;price,45;volume,111 |
| 4 | color,blue |
|-----------|-------------------------------------|

属性列表不是预先定义的。所以这个需要在运行时分析。此外,属性的顺序并不总是相同。

最后我需要的是以下结构的数据框。未定义的值可以为空或显示为 0。

|------------|-------------------------------------------|
| part_no | edges | volume | color | material | price |
|------------|-------------------------------------------|
| 1 | 4 | 532 | | | |
| 2 | 8 | | red | | |
| 3 | | 111 | | wood | 45 |
| 4 | | | blue | | |
|------------|-------------------------------------------|

空值可以显示为 0 或空。

谁能指导我正确的方向如何处理这个问题?

最佳答案

您应该将该列从数据库读取到字典列表(或可迭代的)中。

table = #read_from_SQL
records = [dict(cell.split(",") for cell in row)
for row in table.property.str.split(";")]
# [{'edges': '4', 'volume': '532'},
# {'color': 'red', 'edges': '8'},
# {'material': 'wood', 'price': '45', 'volume': '111'},
# {'color': 'blue'}]

然后你可以使用pandas.DataFrame.from_records :

df2 = pd.DataFrame.from_records(records)
# color edges material price volume
# 0 NaN 4 NaN NaN 532
# 1 red 8 NaN NaN NaN
# 2 NaN NaN wood 45 111
# 3 blue NaN NaN NaN NaN

在适用的情况下将值转换为float:

df3 = df2.apply(pd.to_numeric, errors='ignore')
# color edges material price volume
# 0 NaN 4.0 NaN NaN 532.0
# 1 red 8.0 NaN NaN NaN
# 2 NaN NaN wood 45.0 111.0
# 3 blue NaN NaN NaN NaN

不过,您仍然需要将部件号添加到这些词典中。

关于python - 将逗号分隔值从 mysql 加载到 python 中的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53669871/

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