Skip to content

Commit c88affc

Browse files
author
Albert Villanova del Moral
committed
Fix JSON orient='table' issues for numeric column names (pandas-dev#19129) (pandas-dev#22525)
1 parent e6f7969 commit c88affc

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

pandas/io/json/json.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def __init__(self, obj, orient, date_format, double_precision,
211211
else:
212212
self.obj = obj.reset_index(drop=False)
213213
self.date_format = 'iso'
214-
self.orient = 'records'
214+
self.orient = 'values'
215215
self.index = index
216216

217217
def _write(self, obj, orient, double_precision, ensure_ascii,
@@ -221,6 +221,11 @@ def _write(self, obj, orient, double_precision, ensure_ascii,
221221
ensure_ascii, date_unit,
222222
iso_dates,
223223
default_handler)
224+
# add column names
225+
column_names = dumps(obj.columns)
226+
if len(data) > 2:
227+
column_names = column_names + ','
228+
data = data[0] + column_names + data[1:]
224229
serialized = '{{"schema": {schema}, "data": {data}}}'.format(
225230
schema=dumps(self.schema), data=data)
226231
return serialized

pandas/io/json/table_schema.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -296,8 +296,8 @@ def parse_table_schema(json, precise_float):
296296
pandas.read_json
297297
"""
298298
table = loads(json, precise_float=precise_float)
299-
col_order = [field['name'] for field in table['schema']['fields']]
300-
df = DataFrame(table['data'], columns=col_order)[col_order]
299+
col_order = table['data'][0]
300+
df = DataFrame(table['data'][1:], columns=col_order)[col_order]
301301

302302
dtypes = {field['name']: convert_json_field_to_pandas_type(field)
303303
for field in table['schema']['fields']}
@@ -322,5 +322,6 @@ def parse_table_schema(json, precise_float):
322322
else:
323323
df.index.names = [None if x.startswith('level_') else x for x in
324324
df.index.names]
325+
df.columns = df.columns.values.tolist()
325326

326327
return df

0 commit comments

Comments
 (0)