#python #pandas #dataframe #concatenation
#python #pandas #фрейм данных #конкатенация
Вопрос:
Я перебираю объект JSON для создания фрейма данных. Файл JSON содержит текстовую таблицу только с 1 столбцом в таблице. Я хочу перебрать каждую «строку» в объекте JSON, создать фрейм данных этой строки, а затем добавить этот фрейм данных строки в другой фрейм данных. Я пробовал как append, так и pd.concat, и я не получаю ожидаемых результатов. Я получаю фрейм данных, полный NAs и 2 столбцов вместо 1.
Результат columns_name_list
есть ['1']
.
Результат row_df.columns
есть Index(['1'], dtype='object')
.
Я запустил:
new_df = pd.DataFrame(columns=[column_names_list], index=[0])
print("----------")
print("new_df:n")
print(new_df)
print("----------nn")
for i in range(1,num_rows 1):
print("---")
print(i)
row_df = pd.DataFrame(document_data["tableList"][0]["rowMap"][str(i)]["columns"], index=[0])
print(row_df, "nn")
new_df = pd.concat([new_df, row_df], axis=0)
print("Concatenated df:n")
print(new_df, "n")
print("---nnn")
new_df = new_df.dropna()
new_df = new_df.reset_index(drop=True)
new_df
… который выдает вывод:
----------
new_df:
1
0 NaN
----------
---
1
1
0 EFG intercompany debtor- ABC
Concatenated df:
1 1
0 NaN NaN
0 NaN NaN
---
---
2
1
0 As reported on 29 December 2003, the only subs...
Concatenated df:
1 1
0 NaN NaN
0 NaN NaN
0 NaN NaN
---
1 1
Вывод показывает, что row_df
не содержит NA, но в результате конкатенации строки заполнены NAs и неожиданно добавлен дополнительный столбец.
Ожидаемый результат:
----------
new_df:
1
0 NaN
----------
---
1
1
0 EFG intercompany debtor- ABC
Concatenated df:
1
0 NaN
0 EFG intercompany debtor- ABC
---
---
2
1
0 As reported on 29 December 2003, the only subs...
Concatenated df:
1
0 NaN
0 EFG intercompany debtor- ABC
0 As reported on 29 December 2003, the only subs...
---
1
0 EFG intercompany debtor- ABC
1 As reported on 29 December 2003, the only subs...
Для контекста JSON для первого и второго экземпляров row_df является:
{'columns': {'1': 'EFG intercompany debtor- ABC '}}
{'columns': {'1': "As reported on 29 December 2003, the only subs..."}}
Что я делаю не так и как я могу это исправить?
Комментарии:
1. Одна
row_df.columns
из идей заключается в том, что строки и исходные имена столбцов являются целыми числами, можно ли это проверить?2. Пожалуйста, предоставьте достаточный пример JSON для воспроизведения проблемы.
3. Я добавил объекты JSON, из которых считываются экземпляры row_df.
4. @jezrael Вывод
columns_name_list
is['1']
. Результатrow_df.columns
естьIndex(['1'], dtype='object')
.