将数据帧返回列标题链接到每个列的数据值

2024-03-29 05:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pandas读取任何CSV文件,然后将行插入数据库。我会用炼金术来做这个。你知道吗

我将不知道头的名称或大小,所以它必须是动态的。假设数据库规则将确保数据的有效性。你知道吗

我试图将列标题映射到每个数据值。请参见下面我的当前数据帧:

  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

我已尝试将zipiterrows与以下代码一起使用:

    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,但我需要为每行创建一个insert语句。 谢谢


Tags: 数据数据库标题forexamplezipcatdog
2条回答

@giser\u yugang找到了理想的解决方案。Pandas具有内置方法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'}]

相关问题 更多 >