我正在使用熊猫读取所有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
,但我需要为每行创建一个插入语句。
谢谢
答案 0 :(得分:1)
@giser_yugang可以找到理想的解决方案。 Pandas 具有内置的方法DataFrame.to_dict(orient='dict')
,该方法转换数据帧并返回字典,其中可以使用参数orient
自定义键值对。
“东方”中的“记录”会提供您想要的结果。
所以您的数据框:
使用后:
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'}]