python| 将list或json数据输出为excel文件(1)

又是让chatGPT写代码了~

需求的输入输出是:

# 输入:
dataclasses = {'took': 1327, 'responses': [
{'took': 1327, 'aggregations': {
        '2': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 111},
                          {'key': 'BBB', 'doc_count': 222},
                          {'key': 'CCC', 'doc_count': 333},
                          {'key': 'DDD', 'doc_count': 444}]}}, 'status': 200},
{'took': 1327, 'aggregations': {
        '4': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 555},
                          {'key': 'BBB', 'doc_count': 666},
                          {'key': 'CCC', 'doc_count': 777},
                          {'key': 'DDD', 'doc_count': 888}]}}, 'status': 200},
]}
输出为:
'AAA', 111, 555
'BBB', 222, 666
'CCC', 333, 777
'DDD', 444, 888

或
AAA'       'BBB'      CCC'       DDD'
111        222        333        444
555        666        777        888

多次提问之后,得到满足需求的答案,其中提问为

提供python代码,将字典dataclasses中的每个buckets当做不同样本,其中key为特征名,doc_count为特征值,最终输出一份excel文件的特征表,其中
dataclasses = {'took': 1327, 'responses': [
{'took': 1327, 'aggregations': {
        '2': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 111},
                          {'key': 'BBB', 'doc_count': 222},
                          {'key': 'CCC', 'doc_count': 333},
                          {'key': 'DDD', 'doc_count': 444}]}}, 'status': 200},
{'took': 1327, 'aggregations': {
        '4': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 555},
                          {'key': 'BBB', 'doc_count': 666},
                          {'key': 'CCC', 'doc_count': 777},
                          {'key': 'DDD', 'doc_count': 888}]}}, 'status': 200},
]}

特征表的示例为:
AAA'        'BBB'        CCC'        DDD'
111        222        333        444
555        666        777        888

答案为

import pandas as pd

dataclasses = {'took': 1327, 'responses': [
    {'took': 1327, 'aggregations': {
        '2': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 111},
                          {'key': 'BBB', 'doc_count': 222},
                          {'key': 'CCC', 'doc_count': 333},
                          {'key': 'DDD', 'doc_count': 444}]}}, 'status': 200},
    {'took': 1327, 'aggregations': {
        '4': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 555},
                          {'key': 'BBB', 'doc_count': 666},
                          {'key': 'CCC', 'doc_count': 777},
                          {'key': 'DDD', 'doc_count': 888}]}}, 'status': 200},
]}

# 创建一个空的DataFrame
df = pd.DataFrame()

# 遍历每个response
for response in dataclasses['responses']:
    # 获取buckets
    buckets = response['aggregations'][str(list(response['aggregations'].keys())[0])]['buckets']
    # 将buckets转换为字典
    bucket_dict = {bucket['key']: bucket['doc_count'] for bucket in buckets}
    # 将字典转换为DataFrame的一行
    row = pd.DataFrame(bucket_dict, index=[0])
    # 将行添加到DataFrame中
    df = pd.concat([df, row])

# 将DataFrame写入Excel文件
df.to_excel('特征表.xlsx', index=False)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值