futui 发表于 2023-4-2 20:26:27

关于字典变数据帧的问题,请大师帮忙

本帖最后由 futui 于 2023-4-2 20:31 编辑

我的代码如下 :

rr = '''var Data_currentFundManager =[{"id":"30710472","pic":"/pdf/H8_30710472_1.PNG","name":"泽实","star":4,"workTime":"2年又234天","fundSize":"56.38亿(9只基金)","power":{"avr":"79.12","categories":["经验值","收益率","抗风险","稳定性","择时能力"],"dsc":["反映基金经理从业年限和管理基金的经验","根据基金经理投资的阶段收益评分,反映\u003cbr\u003e基金经理投资的盈利能力","反映基金经理投资的回撤控制能力","反映基金经理投资收益的波动","反映基金经理根据对市场的判断,通过\u003cbr\u003e调整仓位及配置而跑赢业绩的基准能力"],"data":,"jzrq":"2023-03-31"},"profit":{"categories":["任期收益","同类平均","沪深300"],"series":[{"data":[{"name":null,"color":"#7cb5ec","y":-21.2912},{"name":null,"color":"#414c7b","y":-12.08},{"name":null,"color":"#f7a35c","y":-15.74}]}],"jzrq":"2023-03-31"}},{"id":"30710473","pic":"/pdf/H8_30710473_1.PNG","name":"万方","star":4,"workTime":"2年又234天","fundSize":"85.14亿(5只基金)","power":{"avr":"72.24","categories":["经验值","收益率","抗风险","稳定性","择时能力"],"dsc":["反映基金经理从业年限和管理基金的经验","根据基金经理投资的阶段收益评分,反映\u003cbr\u003e基金经理投资的盈利能力","反映基金经理投资的回撤控制能力","反映基金经理投资收益的波动","反映基金经理根据对市场的判断,通过\u003cbr\u003e调整仓位及配置而跑赢业绩的基准能力"],"data":,"jzrq":"2023-03-31"},"profit":{"categories":["任期收益","同类平均","沪深300"],"series":[{"data":[{"name":null,"color":"#7cb5ec","y":-14.0784},{"name":null,"color":"#414c7b","y":2.55},{"name":null,"color":"#f7a35c","y":11.56}]}],"jzrq":"2023-03-31"}}] ;'''

r=re.findall(r'var Data_currentFundManager \=\[(.*)\] \;', rr)
df=pd.DataFrame()
df

为什么df只能生成一个,我想要的样子如下所示,请大师帮忙修改下,谢谢!

id               pic                                     name         ....          jzrq
30710472/pdf/H8_30710472_1.PNG       泽实         .....            2023-03-31
30710473/pdf/H8_30710473_1.PNG       万方         ......         2023-03-31

歌者文明清理员 发表于 2023-4-2 20:32:39

您当前的代码中只能生成一个DataFrame,是因为使用了列表 作为DataFrame的输入。这将创建一个包含单个元素的列表,并将其视为单个记录,而不是多个记录。

要创建多个记录,请使用以下代码:

```python
import json
result = re.findall(r'var Data_currentFundManager =(\[.*\]) ;', rr)
parsed_result = json.loads(result)
df = pd.json_normalize(parsed_result, sep='_')
``

此代码将找到 JSON 格式的字符串并使用 json.loads() 将其转换为 Python 对象。然后使用 pandas 的 json_normalize() 函数将结果展平为 DataFrame。
在使用 json_normalize() 函数时,设置sep参数为'_'可以使嵌套的JSON键名变成单一列中的“层级”名称,方便查看。

注意:使用正则表达式来提取JavaScript对象可能是危险的,因为它们可能不是有效的JSON,特别是如果存在多行注释等情况。确保您的数据始终符合JSON格式和语法,以避免出现意外错误。

isdkz 发表于 2023-4-2 20:49:03

歌者文明清理员 发表于 2023-4-2 20:32
您当前的代码中只能生成一个DataFrame,是因为使用了列表 作为DataFrame的输入。这将创建一个包含单个 ...

新必应?

歌者文明清理员 发表于 2023-4-2 20:55:47

isdkz 发表于 2023-4-2 20:49
新必应?

是https://chat.aidutu.cn/

isdkz 发表于 2023-4-2 21:24:39

歌者文明清理员 发表于 2023-4-2 20:55
是https://chat.aidutu.cn/

好吧,怎么感觉比我的助手还强{:10_277:}
页: [1]
查看完整版本: 关于字典变数据帧的问题,请大师帮忙