有没有办法缩短Mac(Python)上的文件路径并减少数据帧?



我已经尝试使用os.path函数了。

例如,我有以下文件路径:

/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv

我想将其缩短为

/file1.csv

这样我就可以使用 pd.read 模块来读取文件。例如,我想这样做:

df1 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv")
df2 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file2.csv")
df3 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file3.csv")
df4 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file4.csv")
df5 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file5.csv")
df6 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file6.csv")
df7 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file7.csv")
df8 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file8.csv")

但是,显然有两件事妨碍了我:

  1. 文件路径名太长了
  2. 我拥有的数据帧数量。我想将它们放在一起并"同时"阅读它们,这样我就不必遍历每个并使代码更具可扩展性

有没有办法做到这一点? 提前感谢!

而不是手动定义这样的变量,你可以使用 for 循环来定义,

并将变量追加到列表中。

df = []
amt = 8 # The amount of properly labeled csv files
for n in range(amt):
d = pd.read_csv(f"/Users/GSteve_105/Documents/sites/Docs/Experiment/file{n+1}.csv")
df.append(d)

如果要呼叫df3,可以呼叫df[3],如果要df5,可以呼叫df[5]等。

您还可以使用glob模块:

import glob
files = glob.glob("/Users/GSteve_105/Documents/sites/Docs/Experiment/file*.csv") # List all the csv file in the Experiment folder that begins with 'file'

如果你想进入当前目录,或者假设一个目录从当前目录上升,你可以使用:

import sys
sys.path.append('./')

简单地说,进入该文件目录

sys.path.append('path/to/Experiment/')

这样在操作 CSV 时,您可以像 somefunction("file1.csv"( 一样引用它,而无需指定绝对路径。

os.path.join(os.path.split(r'/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv')[1],'')会这样做。

相关内容

  • 没有找到相关文章

最新更新