Как вставить кадр данных Pandas, состоящий из 1 строки, но нескольких столбцов, в одну ячейку SQL?

avatar
user16317538
8 августа 2021 в 19:14
53
1
0

Изначально у меня был объект JSON, который я просмотрел и отфильтровал, а затем преобразовал в список Python [ ] и теперь поместил его в кадр данных Panda.

Фрейм данных PD состоит из 1 строки и 79 столбцов, как я и хотел, в каждом столбце есть одно слово, которое я хотел получить.

Я хочу, чтобы каждое из этих отдельных слов в соответствующих столбцах DF было указано в формате с разделителями, чтобы они помещались в одну ячейку SQL. (Я полагаю, что между ними могут быть точки с запятой)

Что-то вроде:

df_words.to_sql('relevant_database', con=engine, if_exists='append')

Как уместить весь список слов, чтобы они перешли в SQL и попали в одну ячейку в определенном столбце?

например, исходный DF:

       column_1 column_2 column_3 column_4 column_5 etc... etc...
Row 1  Object    Object   Object   Object   Object   

например, ожидаемый результат в Postgres:


 Column_1  Column_2     relevant_word_column   Column_4 ... etc. etc.
                         
                        *(single cell below
                         fits all Dataframe
                         columns as words)*

Row 1                    Object; object; obj..
Row 2
Row 3
Источник
BramV
8 августа 2021 в 19:41
0

попробуйте разбить эту проблему на два шага: сначала создайте столбец с правильными значениями, а затем запишите только эти столбцы в sql.

Ответы (1)

avatar
MDR
8 августа 2021 в 22:20
0

Не полный ответ. Согласно комментарию, разбивая проблему на первую часть и соединяя ячейки...

Дано:

    column_1    column_2    column_3    column_4    column_5
0   This        And         That        And         Another

Попробуйте:

import pandas as pd

delimChar = '; '

df = pd.DataFrame({'column_1': {0: 'This'},
 'column_2': {0: 'And'},
 'column_3': {0: 'That'},
 'column_4': {0: 'And'},
 'column_5': {0: 'Another'}})

df = df.astype(str) + delimChar
df['wholeRow'] = df.sum(axis=1).astype(str)
print(df)

Выводы:

    column_1    column_2    column_3    column_4    column_5    wholeRow
0   This;       And;        That;       And;        Another;    This; And; That; And; Another;

Дополнительно:

# get the cell as a string
myCell = df.loc[0,'wholeRow']

Выводы (пробел в конце):

This; And; That; And; Another;