问题描述
我总是有两个数据框,它们来自不同的目录,名称的最后四位数字相同。文件路径是:
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-string
s:
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)