【问题标题】:Create pandas dataframe from complex string从复杂字符串创建熊猫数据框
【发布时间】:2021-12-24 20:34:03
【问题描述】:

我有一个这样的字符串:

我想实现这样的目标:

timestamp series_0 series_1 series_2 series_3 series_4
2021-01-02T12:06:00Z 0.17167550325393677 0.6362519860267639 0.8500638604164124 0.574917733669281
2021-01-02T12:59:00Z 0.28116047382354736 0.6466034054756165 0.14291030168533325 0.05188792943954468

对于每个时间戳和变量的贡献分数。

【问题讨论】:

  • 嗨 Luca,我尝试更新您问题的格式。请检查我是否遗漏了表中的某些数据——series_4 似乎没有值
  • 请以文本形式提供初始字符串。屏幕截图不可复制。
  • 字符串是这样的:{'timestamp': '2021-01-02T12:06:00Z', 'value': {'contributors': [{'contributionScore': 0.8500638604164124, 'variable' : 'series_2'}, {'contributionScore': 0.6362519860267639, 'variable': 'series_1'}, {'contributionScore': 0.6200128197669983, 'variable': 'series_3'}, {'contributionScore': 0.5749177336 'variable:'1 series_4'}, {'contributionScore': 0.17167550325393677, 'variable': 'series_0'}], 'isAnomaly': True, 'severity': 0.3320668339729309, 'score': 0.5705844163894653}, 'errors': []},跨度>
  • @CallumDA 没关系,谢谢

标签: python json pandas string dataframe


【解决方案1】:

我没有你的所有数据,但我试过了,它有效

import pandas as pd

result =  {
    'timestamp': '2021-01-02T12:06:00Z', 
    'value': 
        {
          'contributors': [
                           {'contributionScore': 0.8500638604164124, 'variable': 'series_2'}, 
                           {'contributionScore': 0.6362519860267639, 'variable': 'series_1'}, 
                           {'contributionScore': 0.6200128197669983, 'variable': 'series_3'}, 
                           {'contributionScore': 0.574917733669281, 'variable': 'series_4'},
                           {'contributionScore': 0.17167550325393677, 'variable': 'series_0'}],
          'isAnomaly': True,
          'severity': 0.3320668339729309, 
          'score': 0.5705844163894653
         }, 
   'errors': []
   }


data = {
    
    'timestamp' : [result['timestamp']],
    'series_0'  : [result['value']['contributors'][4]['contributionScore']],
    'series_1'  : [result['value']['contributors'][1]['contributionScore']],
    'series_2'  : [result['value']['contributors'][0]['contributionScore']],
    'series_3'  : [result['value']['contributors'][2]['contributionScore']],
    'series_4'  : [result['value']['contributors'][3]['contributionScore']]
    
}


df = pd.DataFrame(data=data)
print(df)

输出:

   timestamp  series_0  series_1  series_2  series_3  series_4
0  2021-01-02T12:06:00Z  0.171676  0.636252  0.850064  0.620013  0.574918

如果您的初始字符串与我的结果变量具有相同的结构,这将起作用

你能把你所有的字符串都写成文本吗?

【讨论】:

  • 如果我尝试您的代码,我在 4 data = { 5 ----> 6 'timestamp' 中出现此错误“TypeError Traceback (最近一次调用最后一次) : [结果['timestamp']],7'series_0':[result['value']['contributors'][4]['contributionScore']],8'series_1':[result['value']['贡献者'][1]['contributionScore']],TypeError: 字符串索引必须是整数"
  • 因为你的字符串没有相同的结构,你能把你所有的字符串都给我吗
  • [{'timestamp': '2021-01-02T12:06:00Z', 'value': {'contributors': [{'contributionScore': 0.8500638604164124, 'variable': 'series_2' },{'contributionScore':0.6362519860267639,'variable':'series_1'},{'contributionScore':0.6200128197669983,'variable':'series_3'},{'contributionScore':0.574917733669281,'variable':' {'contributionScore': 0.17167550325393677, 'variable': 'series_0'}], 'isAnomaly': True, 'severity': 0.3320668339729309, 'score': 0.5705844163894653}, 'errors': []},
猜你喜欢
  • 2018-11-03
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 2017-02-24
  • 2021-04-30
  • 2019-04-16
相关资源
最近更新 更多