将 pandas 数据框保存为 csv 并覆盖现有文件
Saving pandas dataframe as csv and overwrite existing file
我总是有两个来自不同目录的数据帧,它们的名称中的最后四位数字相同。文件路径是:
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)
我总是有两个来自不同目录的数据帧,它们的名称中的最后四位数字相同。文件路径是:
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)