dimanche 12 juin 2016

Unicode text in pandas dataframe cannot parse to JSON


I'm trying write python code to build a nested JSON file from a flat table in a pandas data frame. I created a dictionary of dictionaries from the pandas dataframe. When I try to export the dict to JSON, I get an error that the unicode text is not a string. How can I convert dictionaries with unicode strings to JSON?

My current code is:

data = pandas.read_excel(inputExcel, sheetname = 'SCAT Teams', encoding = 'utf8')
columnList = tuple(data[0:])
    for index, row in data.iterrows():
    dataRow = tuple(row)
    rowDict = dict(zip(dataRow[2:],columnList[2:]))

    memberId = str(tuple(row[1]))
    teamName = str(tuple(row[0]))

    memberDict1 = {memberId[1:2]:rowDict}
    memberDict2 = {teamName:memberDict1}

This produces a dict of dicts like where each row looks like this:

'(1L,)': {'0': {(u'Doe',): (u'lastname',), (u'John',): (u'firstname',), (u'none',): (u'mobile',), (u'916-555-1234',): (u'phone',), (u'john.doe@wildlife.net',): (u'email',), (u'Anon',): (u'orgname',)}}}

But when I try to dump to JSON, the unicode text can't be parsed as strings, so I get this error:

TypeError: key (u'teamname',) is not a string

How can I convert my nested dicts to JSON without invoking the error?


Aucun commentaire:

Enregistrer un commentaire