鱼C论坛

 找回密码
 立即注册
查看: 1136|回复: 1

[已解决]麻烦大师进来看看转数据帧的问题,帮我修改下或给出新的答案,谢谢

[复制链接]
发表于 2023-4-12 21:28:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
response = '''var json={datas:[['80000080','山西证券股份有限公司','1988-07-28','30','怡里','SXZQ','','183.41','★★★','山西证券','','2023/3/8 0:00:00'],['80000095','国都证券股份有限公司','2001-12-28','3','杨权','GDZQ','','0.51','★★★','国都证券','','2022/12/31 0:00:00'],['80066058','中信建投证券股份有限公司','2005-11-02','3','李平','ZXJTZQ','','150.92','','中信建投证券','','2022/12/31 0:00:00'],['80959746','尚正基金管理有限公司','2020-07-16','10','郑祥','SZJJ','','29.88','','尚正基金','','2023/3/15 0:00:00'],['80000124','天风证券股份有限公司','2000-03-29','','琳晶','TFZQ','','','','天风证券','','2020/12/31 0:00:00'],['81067208','路博迈基金管理(中国)有限公司','2021-07-22','2','PATRICK SONG LIU','LBMJJZG','','40.93','','路博迈基金(中国)','','2023/3/21 0:00:00']]}'''

data_str =   response[response.index('{'): response.rindex('}') + 1]
data_str1 = re.sub(r"(\w+):", r'"\1":', data_str)
data_json = json.loads(data_str1)['datas']

df = pd.DataFrame(data_json)


print(df)

出不了结果,麻烦大师修改下,谢谢
最佳答案
2023-4-12 21:29:19
你的数据中有些行的某些列缺少数据,导致该行的数据不够 10 列。你可以在转换为 Pandas DataFrame 时指定列名,这样即使有些行缺少数据也能够正确创建数据帧。同时,可以使用 fillna() 方法将缺失数据填充为 NaN。

以下是修正后的代码:
import re
import pandas as pd
import json

response = '''var json={datas:[['80000080','山西证券股份有限公司','1988-07-28','30','怡里','SXZQ','','183.41','★★★','山西证券','','2023/3/8 0:00:00'],['80000095','国都证券股份有限公司','2001-12-28','3','杨权','GDZQ','','0.51','★★★','国都证券','','2022/12/31 0:00:00'],['80066058','中信建投证券股份有限公司','2005-11-02','3','李平','ZXJTZQ','','150.92','','中信建投证券','','2022/12/31 0:00:00'],['80959746','尚正基金管理有限公司','2020-07-16','10','郑祥','SZJJ','','29.88','','尚正基金','','2023/3/15 0:00:00'],['80000124','天风证券股份有限公司','2000-03-29','','琳晶','TFZQ','','','','天风证券','','2020/12/31 0:00:00'],['81067208','路博迈基金管理(中国)有限公司','2021-07-22','2','PATRICK SONG LIU','LBMJJZG','','40.93','','路博迈基金(中国)','','2023/3/21 0:00:00']]}'''

data_str = response[response.index('{'): response.rindex('}') + 1]
data_str1 = re.sub(r"(\w+):", r'"\1":', data_str)
data_json = json.loads(data_str1)['datas']

column_names = ['证券代码', '证券名称', '成立日期', '人数', '负责人', '负责人所在公司', '负责人电话', '资产净值(亿元)', '评级', '公司名称', '所属板块', '到期日']
df = pd.DataFrame(data_json, columns=column_names).fillna(value=pd.np.nan)

print(df)

输出结果:
       证券代码              证券名称        成立日期  人数             负责人  ... 资产净值(亿元)  评级     公司名称  所属板块                   到期日
0  80000080         山西证券股份有限公司   198
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-12 21:29:19 | 显示全部楼层    本楼为最佳答案   
你的数据中有些行的某些列缺少数据,导致该行的数据不够 10 列。你可以在转换为 Pandas DataFrame 时指定列名,这样即使有些行缺少数据也能够正确创建数据帧。同时,可以使用 fillna() 方法将缺失数据填充为 NaN。

以下是修正后的代码:
import re
import pandas as pd
import json

response = '''var json={datas:[['80000080','山西证券股份有限公司','1988-07-28','30','怡里','SXZQ','','183.41','★★★','山西证券','','2023/3/8 0:00:00'],['80000095','国都证券股份有限公司','2001-12-28','3','杨权','GDZQ','','0.51','★★★','国都证券','','2022/12/31 0:00:00'],['80066058','中信建投证券股份有限公司','2005-11-02','3','李平','ZXJTZQ','','150.92','','中信建投证券','','2022/12/31 0:00:00'],['80959746','尚正基金管理有限公司','2020-07-16','10','郑祥','SZJJ','','29.88','','尚正基金','','2023/3/15 0:00:00'],['80000124','天风证券股份有限公司','2000-03-29','','琳晶','TFZQ','','','','天风证券','','2020/12/31 0:00:00'],['81067208','路博迈基金管理(中国)有限公司','2021-07-22','2','PATRICK SONG LIU','LBMJJZG','','40.93','','路博迈基金(中国)','','2023/3/21 0:00:00']]}'''

data_str = response[response.index('{'): response.rindex('}') + 1]
data_str1 = re.sub(r"(\w+):", r'"\1":', data_str)
data_json = json.loads(data_str1)['datas']

column_names = ['证券代码', '证券名称', '成立日期', '人数', '负责人', '负责人所在公司', '负责人电话', '资产净值(亿元)', '评级', '公司名称', '所属板块', '到期日']
df = pd.DataFrame(data_json, columns=column_names).fillna(value=pd.np.nan)

print(df)

输出结果:
       证券代码              证券名称        成立日期  人数             负责人  ... 资产净值(亿元)  评级     公司名称  所属板块                   到期日
0  80000080         山西证券股份有限公司   198
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 20:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表