微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用python根据数据框中的列元素更改文件夹中的文件名

如何解决如何使用python根据数据框中的列元素更改文件夹中的文件名

我有一个数据框 'df' 和一个文件夹(路径:F:\folder),其中包含名称与 df['name'] 相同的文件。即 aa、fg、dc 和 vb。

df=
key    name
hi-1   aa
hi-2   fg
hi-3   dc
hi-4   vb

我有兴趣更改文件夹中这些文件名称及其在 df['key'] 列的同一行中的相应元素。即,将文件 aa 重命名为 hi-1,将 fg 重命名为 hi-2,依此类推。

我尝试这样做:

import glob,os
os.chdir(r'F:\folder')

for file in glob.glob("*.txt"):
    os.rename(file,df['key'])

但是,它不起作用,并且它会根据字符串在 df['key'] 列中保存的顺序分配文件名,这将是不正确的,因为文件的顺序可能不同在文件夹中。

解决方法

这是一种方法:

import os

os.chdir("path_to_your_folder")
names_dict = dict(zip(df['key'],df['name']))

for new_name,old_name in names_dict.items():
    os.rename(old_name,new_name)
,

试试这个:

import pandas as pd
import os
  
## Your Dataframe
data = {
        'key':['hi-1','hi-2','hi-3','hi-4'],'name':['aa','fg','dc','vb']
      }
df = pd.DataFrame(data)

## File path
path = r'home\folder'

for rownum,row in df.iterrows():
  # Get names
  old_name = row['name']
  new_name = row['key']
  ## Rename file in folder
  os.rename(os.path.join(path,old_name),os.path.join(path,new_name))
,

这是您可以尝试的解决方案,

for i in df.to_dict(orient='records'):
    if os.path.exists(rf'F:\folder\{i["name"]}.txt'):
        os.rename(
            rf'F:\folder\{i["name"]}.txt',rf'F:\folder\{i["key"]}.txt'
        )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。