title: How to normalize JSON string type column of pandas dataframe?
body: <p>I am trying to split a column with an array of a list into multiple columns and create multiple rows. Below is the sample data:</p>
  
  <pre><code>signalid    monthyear   readings
  5135         201901    [{"v":"90","q":1,"t":1546444800000,"g":0}]
  5135         201901    [{"v":"50","q":1,"t":1546444900000,"g":0}]
  5135         201901    [{"v":"40","q":1,"t":1546445800000,"g":0}]
  5135         201901    [{"v":"30","q":1,"t":1546446800000,"g":0},{"v":"35","q":1,"t":1546446900000,"g":0}]
  </code></pre>
  
  <p><strong>Details about data:</strong></p>
  
  <ol>
  <li><p>Data is fetched from the Cassandra database.</p></li>
  <li><p>The column data type in Cassandra is text.</p></li>
  <li><p><strong>dataframe.readings[0]</strong></p></li>
  </ol>
  
  <blockquote>
    <p>'[{"v":"9817","q":1,"t":1548979150085,"g":0},{"v":"9821","q":1,"t":1548979151475,"g":0}]'</p>
  </blockquote>
  
  <ol start="4">
  <li><p><strong>dataframe.readings.dtype</strong></p>
  
  <p>dtype('O')</p></li>
  </ol>
  
  <p><strong>Normalize code:</strong></p>
  
  <pre><code>normalizeddataframe = json_normalize(data=dataframe, record_path='readings', 
                              meta=["signalid", "monthyear"])
  </code></pre>
  
  <p><strong>Expected output:</strong></p>
  
  <pre><code>signalid    monthyear  v     q         t           g
  5135         201901    90    1    1546444800000    0
  5135         201901    50    1    1546444900000    0
  5135         201901    40    1    1546445800000    0
  5135         201901    30    1    1546446800000    0
  5135         201901    35    1    1546446900000    0
  </code></pre>
  
  <p><strong>Result:</strong></p>
  
  <pre><code>TypeError                                 Traceback (most recent call last)
  &lt;ipython-input-13-486775fb3431&gt; in &lt;module&gt;
       60 #normalizeddataframe = pandas.read_json(dataframe.readings)
       61 normalizeddataframe = json_normalize(data=dataframe, record_path='readings', 
  ---&gt; 62                             meta=["signalid", "monthyear", "fromtime", "totime", "avg", "insertdate", "max", "min"])
       63 #normalizeddataframe = json_normalize(pandas.Series.to_json(dataframe.readings))
       64 print("Processig completed");
  
  C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\json\normalize.py in json_normalize(data, record_path, meta, meta_prefix, record_prefix, errors, sep)
      260                 records.extend(recs)
      261 
  --&gt; 262     _recursive_extract(data, record_path, {}, level=0)
      263 
      264     result = DataFrame(records)
  
  C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\json\normalize.py in _recursive_extract(data, path, seen_meta, level)
      236         else:
      237             for obj in data:
  --&gt; 238                 recs = _pull_field(obj, path[0])
      239 
      240                 # For repeating the metadata later
  
  C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\json\normalize.py in _pull_field(js, spec)
      183                 result = result[field]
      184         else:
  --&gt; 185             result = result[spec]
      186 
      187         return result
  
  TypeError: string indices must be integers
  </code></pre>