Skip to content
Advertisement

to_json without header and index pandas

I have the following pandas DF

                                              data
day                                           2021-09-30
value1                                        730716000
value2                                        974689000
value3                                        375689000
value4                                        369077000

How can I convert this DF to json to be like:

{
    "day": "2021-09-30",
    "value1": 702228000,
    "value2": 924465000,
    "value3": 309753000,
    "value4": 306252
}

My best try was:

df.columns = range(df.shape[1])   # Delete headers
print(df.to_json(orient='index', indent=2))

But I got this output:

{
  "day":{
    "0":"2021-09-30"
  },
  "value1":{
    "0":"730716000"
  },
  "value2":{
    "0":"974689000"
  },
  "value3":{
    "0":"375689000"
  },
  "value4":{
    "0":"369077000"
  }
}

Bonus Doubt: Is it possible to parse only the values 1,2,3 and 4 of column data to int?

Advertisement

Answer

The first approach is to squeeze your dataframe before use to_json

>>> print(df.squeeze().to_json(indent=4))
{
    "day":"2021-09-30",
    "value1":"730716000",
    "value2":"974689000",
    "value3":"375689000",
    "value4":"369077000"
}

For the bonus, use a different strategy

import json

data = json.dumps({k: int(v) if v.isdigit() else v
                      for k, v in df.squeeze().to_dict().items()}, indent=2)
print(data)

# Output
{
  "day": "2021-09-30",
  "value1": 730716000,
  "value2": 974689000,
  "value3": 375689000,
  "value4": 369077000
}
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement