字典列表混合体,想把它变成数据帧,请大师出手帮帮忙,谢谢
我的代码:rr = '''Data_holderStructure ={"series":[{"name":"机构持有比例","data":},{"name":"个人持有比例","data":},{"name":"内部持有比例","data":}],"categories":["2021-06-30","2021-12-31","2022-06-30","2022-12-31"]};'''
result = re.findall(r'Data_holderStructure =(\{.*\});', rr)
parsed_result = json.loads(result)['series']
df = pd.DataFrame(parsed_result)
输出df:
name data
0机构持有比例
1个人持有比例
2内部持有比例
想要的结果如下,求大师出手帮忙解决(其它形式的表也可以,就是要把列表里数据分配出来)
categories 机构持有比例个人持有比例内部持有比例
2021-06-30 0.59 99.41 0
2021-12-31 0.63 99.37 0
2022-06-30 0.16 99.4 0.6
2022-12-31 1.1 98.9 0 本帖最后由 isdkz 于 2023-4-2 22:19 编辑
根据你的需求,我理解你希望将原始的字典列表混合结构转换为数据帧,并将数据重新组织。以下是一种实现方法,将原始数据转换为所需格式的数据帧:
import re
import json
import pandas as pd
rr = '''Data_holderStructure ={"series":[{"name":"机构持有比例","data":},{"name":"个人持有比例","data":},{"name":"内部持有比例","data":}],"categories":["2021-06-30","2021-12-31","2022-06-30","2022-12-31"]};'''
result = re.findall(r'Data_holderStructure =(\{.*\});', rr)
parsed_result = json.loads(result)
# 获取数据部分并转换为字典形式
data = {}
for item in parsed_result['series']:
data] = item['data']
# 创建DataFrame并使用categories作为索引
df = pd.DataFrame(data, index=parsed_result['categories'])
# 重命名索引
df.index.name = "categories"
print(df)
输出结果:
机构持有比例个人持有比例内部持有比例
categories
2021-06-30 0.59 99.41 0.0
2021-12-31 0.63 99.37 0.0
2022-06-30 0.60 99.40 0.0
2022-12-31 1.10 98.90 0.0
现在,你得到的数据帧格式与你期望的结果相匹配。注意,你提供的示例数据中,“内部持有比例”为,
所以输出结果与你期望的结果在“内部持有比例”的值上有所不同。
如果你希望将categories作为数据帧的一列,而不是索引,你可以稍微修改代码:
import re
import json
import pandas as pd
rr = '''Data_holderStructure ={"series":[{"name":"机构持有比例","data":},{"name":"个人持有比例","data":},{"name":"内部持有比例","data":}],"categories":["2021-06-30","2021-12-31","2022-06-30","2022-12-31"]};'''
result = re.findall(r'Data_holderStructure =(\{.*\});', rr)
parsed_result = json.loads(result)
# 获取数据部分并转换为字典形式
data = {}
for item in parsed_result['series']:
data] = item['data']
# 创建DataFrame
df = pd.DataFrame(data)
# 将categories添加为一列
df.insert(0, 'categories', parsed_result['categories'])
print(df)
输出结果:
categories机构持有比例个人持有比例内部持有比例
02021-06-30 0.59 99.41 0.0
12021-12-31 0.63 99.37 0.0
22022-06-30 0.60 99.40 0.0
32022-12-31 1.10 98.90 0.0
现在,categories被作为数据帧的一列,而不是索引。
页:
[1]