我有一个向用户提出三点要求的小脚本,我们称它们为A、B和C.我需要将这些数据保存到CSV文件中,如下所示:
,A,B,C
0,a,b,c
1,d,e,f
2,g,h,i
如果A的值已经在CSV上,我需要在与A相同的行上更新值B和C. 如果A的值不在CSV上,我需要在CSV的末尾追加.
因此,如果A的值为d,B的值为x,C的值为y,则CSV应更新为:
,A,B,C
0,a,b,c
1,d,x,y
2,g,h,i
如果A的值是j,B是x,C是y,则CSV应更新为:
,A,B,C
0,a,b,c
1,d,e,f
2,g,h,i
3,j,x,y
到目前为止,这就是我想出的办法,但我想我不知道如何让它变得更好:
def save_data(a, b, c):
data = {'A': a, 'B': b, 'C': c}
try:
df = pd.read_csv('my_data.csv')
saved_data = df.to_dict(orient='list')
if a in saved_data['A']:
position = saved_data['A'].index(a)
saved_data['B'][position] = b
saved_data['C'][position] = c
else:
first_key = next(iter(saved_data))
saved_data.pop(first_key)
for k, v in data.items():
saved_data[k].append(v)
df = df.from_dict(saved_data)
df.to_csv('my_data.csv')
except FileNotFoundError:
df = pd.DataFrame([v for _, v in data.items()], columns=['A', 'B', 'C'])
df.to_csv('my_data.csv')
我try 寻找更优化的解决方案来替换DataFrame上的整行,但找不到我需要做的事情.我想知道我是不是做得太过分了,或者有没有更有效的方法来解决这个问题.
谢谢你的帮助!