将熊猫数据框保存为 csv 并覆盖现有文件

问题描述

我总是有两个数据框,它们来自不同的目录,名称的最后四位数字相同。文件路径是:

dir1 = "path/to/files1/"
dir2 = "path/to/files2/"

然后我使用循环来加载和连接属于数据帧 df 的数据帧。

# For each file in the first directory
for i in os.listdir(dir1):
    # For each file in the second directory
    for j in os.listdir(dir2):
        # If the last 4 digits of filename match (ignoring file extension)
        if i[-8:-4] == j[-8:-4]:
            # Load CSVs into pandas
            print(i[-12:-4] + ' cpu Analysis')
            print('\n')
            df1 = pd.read_csv(dir1 + i,delimiter=',')
            
            df2 = pd.read_csv(dir2 + j,delimiter=';')
            
            df = pd.concat([df1,df2])

我现在想要做的是使用与以前相同的文件名将 df 存储在 dir1 中,即我想覆盖 dir1 中的现有文件并另存为 csv。

所以,我想我应该在循环结束时使用这样的东西:

df.to_csv(dir1,i[:-4])

但我不确定这一点。

解决方法

我认为这里是 + 可能的连接值:

df = pd.concat([df1,df2])
df.to_csv(dir1 + i[:-4] + '.csv',index=False)

或使用 f-strings:

df = pd.concat([df1,df2])
df.to_csv(f'{dir1}{i[:-4]}.csv',index=False)

但如果需要原始扩展名,请使用与读取文件相同的路径:

df = pd.concat([df1,df2])
df.to_csv(dir1 + i,index=False)

df = pd.concat([df1,df2])
df.to_csv(f'{dir1}{i}',index=False)