展平Json输出

时间:2018-07-01 21:37:25

标签: python pivot normalize

如何将这些数据转换为平面数据框?

我尝试使用json_normalize和ivot,但是我似乎无法正确使用格式。

这是我想要的输出格式:

SiteName | SiteId | ... | CompressorMeterRefID | TankID | TankNumber ... | TankID | TankNumber ... | TankID | ... DateandTime | ...

请告知

[{'SiteName': 'Reinschmiedt 1-4H (CRP 11)',
  'SiteId': 57,
  'SiteRefId': 'OK10020',
  'Choke': '',
  'GasMeter1': 53.25,
  'GasMeter1Name': 'Check Meter',
  'GasMeter1RefId': '',
  'GasMeter2Name': '',
  'GasMeter2RefId': '',
  'GasMeter3Name': '',
  'GasMeter3RefId': '',
  'OilMeter1Name': '',
  'OilMeter1RefId': '',
  'OilMeter2Name': '',
  'OilMeter2RefId': '',
  'WaterMeter1': 0.0,
  'WaterMeter1Name': 'Water Meter',
  'WaterMeter1RefId': '',
  'WaterMeter2Name': '',
  'WaterMeter2RefId': '',
  'FlareMeterName': '',
  'FlareMeterRefId': '',
  'GasLiftMeterName': '',
  'GasLiftMeterRefId': '',
  'CompressorMeterName': '',
  'CompressorMeterRefId': '',
  'TankEntries': [{'TankId': 138,
    'TankNumber': 2,
    'TankLevelDateTime': '2018-07-01T12:00:00.0000000Z',
    'TankLevelDateTimeLocal': '2018-07-01T07:00:00.0000000Z',
    'TankTopGauge': 35.99,
    'TankName': 'Oil Tank 209206',
    'TankRefId': 0,
    'TankRefId2': '',
    'TankRefId3': ''},
   {'TankId': 139,
    'TankNumber': 3,
    'TankLevelDateTime': '2018-07-01T12:00:00.0000000Z',
    'TankLevelDateTimeLocal': '2018-07-01T07:00:00.0000000Z',
    'TankTopGauge': 109.5,
    'TankName': 'Oil Tank 209207',
    'TankRefId': 0,
    'TankRefId2': '',
    'TankRefId3': ''}],
  'DateAndTime': '2018-07-01T12:00:00.0000000Z',
  'DateAndTimeLocal': '2018-07-01T07:00:00.0000000Z',
  'UserName': 'ScadaVisor',
  'Notes': ''},
 {'SiteName': 'Allen 1-11H (CRP 8)',
   .....
   .....
   .....

1 个答案:

答案 0 :(得分:0)

在r中,您可以使用jsonlite包这样做:

result<- as.data.frame(jsonlite::stream_in(textConnection(data)))