我已经尝试使用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")
但是,显然有两件事妨碍了我:
- 文件路径名太长了
- 我拥有的数据帧数量。我想将它们放在一起并"同时"阅读它们,这样我就不必遍历每个并使代码更具可扩展性
有没有办法做到这一点? 提前感谢!
而不是手动定义这样的变量,你可以使用 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],'')
会这样做。