Заголовок столбца возврата Pandas dataframe, связанный со значением данных для каждой строки

Я использую pandas для чтения любых файлов CSV, а затем вставляю строки в базу данных. Я буду делать это с помощью SQLAlchemy.

Я не буду знать имена заголовков или размер, поэтому он должен быть динамическим. Предположим, что правила базы данных обеспечат достоверность данных.

Я пытаюсь сопоставить заголовок столбца с каждым значением данных. См. ниже мой текущий фрейм данных:

  Example 1 Example 2 Example 3 Example 4
        Cat       Dog     Mouse     Horse
        Cow       Ant       Pig  Elephant

Вот мой желаемый выводимый список:

Example 1=Cat, Example 2=Dog, Example 3=Mouse, Example 4=Horse
Example 1=Cow, Example 2=Ant, Example 3=Pig, Example 4=Elephant

Я пробовал использовать zip и iterrows с кодом ниже:

    for index, data in df.iterrows():
        mylist.append(data.values)

    myzip = zip(columns, mylist)

    for z in myzip:
        print(z)

но это создает один заголовок столбца для нескольких значений, как показано ниже:

('Example 1', array(['Cat', 'Dog', 'Mouse', 'Horse'], dtype=object))
('Example 2', array(['Cow', 'Ant', 'Pig', 'Elephant'], dtype=object))

Любая помощь будет принята с благодарностью, поскольку я не уверен, какую функцию мне нужно использовать. Я знаю о to_sql, но мне нужно создать оператор вставки для каждой строки. Спасибо

df.to_dict(orient='records') поможет вам. Кроме того, SQLAlchemy поддерживает вставку панд.
giser_yugang 10.04.2019 10:44

Удивительно большое спасибо за вашу помощь

rup 10.04.2019 11:34
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
675
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

@giser_yugang нашел идеальное решение. Панды имеет встроенный метод DataFrame.to_dict(orient='dict'), который преобразует фрейм данных и возвращает словарь, где пара ключ-значение может быть настроена с помощью параметра orient.
«записи» среди «востока» дают желаемый результат.

Итак, ваш фрейм данных:

dataframe

После использования:

df.to_dict(orient='records')

дает:

[{'Example 1': 'Cat',
  'Example 2': 'Dog',
  'Example 3': 'Mouse',
  'Example 4': 'Horse'},
 {'Example 1': 'Cow',
  'Example 2': 'Ant',
  'Example 3': 'Pig',
  'Example 4': 'Elephant'}]

Другие вопросы по теме