Заголовок столбца возврата данных Pandas, связанный со значением данных для каждой строки - PullRequest
0 голосов
/ 10 апреля 2019

Я использую 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, но мне нужно создать оператор вставки для каждой строки.Спасибо

1 Ответ

1 голос
/ 10 апреля 2019

@ giser_yugang предлагает идеальное решение. Pandas имеет встроенный метод DataFrame.to_dict(orient='dict'), который преобразует фрейм данных и возвращает словарь, в котором пара ключ-значение может быть настроена с помощью параметра orient.
'records' среди значений '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'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...