|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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":[69.0,88.0,74.80,72.0,75.0],"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":[69.0,89.20,65.80,61.40,52.90],"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([r])
df
为什么df只能生成一个,我想要的样子如下所示,请大师帮忙修改下,谢谢!
id pic name .... jzrq
30710472 /pdf/H8_30710472_1.PNG 泽实 ..... 2023-03-31
30710473 /pdf/H8_30710473_1.PNG 万方 ...... 2023-03-31
您当前的代码中只能生成一个DataFrame,是因为使用了列表 [r] 作为DataFrame的输入。这将创建一个包含单个元素的列表,并将其视为单个记录,而不是多个记录。
要创建多个记录,请使用以下代码:
```python import json
result = re.findall(r'var Data_currentFundManager =(\[.*\]) ;', rr)[0]
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格式和语法,以避免出现意外错误。
|
|