【发布时间】:2025-11-21 22:05:03
【问题描述】:
我正在尝试使用 df.to_csv() 将数据附加到 csv。我想使用一个优雅的代码来使用它,但是会出现问题。有时,我碰巧得到带有不同顺序键的字典
import pandas as pd
# Simplified version of my function
def save_to_csv(dictionary, index):
df = pd.DataFrame(dictionary, index=[index])
header = index == 0
df.to_csv('test.csv', mode='a', header=header)
# I run some function, I get dict 'dict' => I want to save it into csv file
id = 0
dict = {'col_name_1': 1, 'col_name_2': 2, 'col_name_3': 3}
save_to_csv(dict, id)
# I run some function a second time, I get dict 'dict' => I want to append it into csv file
id = 1
dict = {'col_name_2': 2, 'col_name_3': 3, 'col_name_1': 1}
save_to_csv(dict, id)
# etc ...
我明白了
,col_name_1,col_name_2,col_name_3
0,1,2,3
1,2,3,1
代替
,col_name_1,col_name_2,col_name_3
0,1,2,3
1,1,2,3
我想长时间使用此功能,因此我想避免黑客攻击并尽可能提供更多干净/强大的解决方案
如果您有任何想法,将不胜感激,谢谢!
【问题讨论】:
-
恕我直言,唯一的防弹方法是将列作为列表传递:
cols = ['col_name_1', 'col_name_2', 'col_name_3'],然后是save_to_csv(dict, id, cols),最后是df = pd.DataFrame(dictionary, index=[index], columns=cols)。或者,您可以对列名进行排序:df = pd.DataFrame(dictionary, index=[index], columns=sorted(dictionary.keys())).
标签: python pandas file csv dictionary