如何将Pandas DataFrame转换为键值对与CSV格式?
嘿,这个问题我太熟了!其实Pandas本身就自带了高效到爆的方法来搞定这两种转换,完全没必要自己手动去迭代字典(当然硬要迭代也能行,但纯属绕远路~),下面给你详细拆解两种格式的最优实现方式:
格式1:转换为键值对格式
Pandas的to_dict()方法直接就能满足需求,而且支持多种键值对结构,分两种常见场景给你举例:
场景1:每行数据转为独立的键值对字典(组成列表)
这是最常用的场景,比如把表格里的每一行转成一个字典,最终得到字典列表。用to_dict('records')即可:
import pandas as pd # 先创建一个示例DataFrame data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'London', 'Paris'] } df = pd.DataFrame(data) # 转换为每行一个键值对字典的列表 key_value_list = df.to_dict('records') print(key_value_list) # 输出: # [{'Name': 'Alice', 'Age': 25, 'City': 'New York'}, # {'Name': 'Bob', 'Age': 30, 'City': 'London'}, # {'Name': 'Charlie', 'Age': 35, 'City': 'Paris'}]
场景2:按列聚合的键值对字典
如果需要把每一列的所有值作为列表,对应列名作为键,用to_dict('list'):
column_based_dict = df.to_dict('list') print(column_based_dict) # 输出: # {'Name': ['Alice', 'Bob', 'Charlie'], # 'Age': [25, 30, 35], # 'City': ['New York', 'London', 'Paris']}
格式2:转换为CSV格式
这个更简单,Pandas的to_csv()方法一键搞定,支持保存到文件或者直接生成CSV字符串:
保存为CSV文件
如果要把结果存到本地文件,只需要指定文件名,加上index=False可以去掉默认的行索引(避免多出一列无用数据):
# 保存到本地文件 df.to_csv('output.csv', index=False)
生成CSV格式的字符串
如果不需要保存文件,只想拿到CSV格式的文本内容,直接调用to_csv()并赋值给变量即可:
csv_string = df.to_csv(index=False) print(csv_string) # 输出: # Name,Age,City # Alice,25,New York # Bob,30,London # Charlie,35,Paris
为啥不推荐手动迭代字典?
Pandas的这些to_*方法都是用底层C扩展实现的,比纯Python循环迭代快N倍,尤其是数据量很大的时候,效率差距会非常明显。除非你有特殊的自定义格式需求(比如要修改键名、处理嵌套结构),否则直接用自带方法就是最优解!
内容的提问来源于stack exchange,提问作者blue01
相关产品推荐
相关产品推荐

