futui 发表于 2023-4-12 21:28:01

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

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
data_str1 = re.sub(r"(\w+):", r'"\1":', data_str)
data_json = json.loads(data_str1)['datas']

df = pd.DataFrame(data_json)


print(df)

出不了结果,麻烦大师修改下,谢谢

isdkz 发表于 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
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)


输出结果:
       证券代码            证券名称      成立日期人数             负责人... 资产净值(亿元)评级   公司名称所属板块                   到期日
080000080         山西证券股份有限公司   198
页: [1]
查看完整版本: 麻烦大师进来看看转数据帧的问题,帮我修改下或给出新的答案,谢谢