用Pandas读取多个csv文件并分配不同的名称

62o28rlo  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(185)

我在一个directory里面,里面有一系列.csv文件,我想把它们赋给自己的变量。
我的想法是首先在循环中整理每个 Dataframe ,然后在最后合并所有内容(我的代码非“循环化”是一系列删除、重命名和分组/透视命令。我编写了这些命令,因为所有.csv文件看起来都一样。
编写循环的最后一步是迭代读取for循环中的.csv文件集。csv文件名为:

  1. 100001_t0.csv
  2. 100001_t1.csv
  3. 100001_t2.csv
  4. 100002_t0.csv
    ...依此类推,直到100009_t2.csv
    在下面的循环中,filename是csv的文件名,而subjid是.csv扩展名前面的字母数字ID。
    我已经尝试了exec("{0}_df = pd.read_csv(filename)".format(subjid)),但是得到了一个无效的标记错误。有没有办法改变这一行的格式部分,让 Dataframe 分配给它们自己的变量,用它们的subjid命名?
    谢谢你!
for filename in os.listdir(volume_statistics_directory):
    f = os.path.join(volume_statistics_directory, filename)
    if os.path.isfile(f):
        subjid = filename[0:9]
        #print(subjid)
        #print(f)
        print(filename, "being read in...")
        print("\n")
        exec("{0}_df = pd.read_csv(filename)".format(subjid))
        df = pd.read_csv(filename)

100001_t0.csv being read in...

Traceback (most recent call last):

  File "C:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-109-ceed2fd80975>", line 9, in <module>
    exec("{0}_df = pd.read_csv(filename)".format(subjid))

  File "<string>", line 1
    100001_t0_df = pd.read_csv(filename)
          ^
SyntaxError: invalid token
kupeojn6

kupeojn61#

这里的错误是因为变量名以数字开头是不法律的的。否则你的代码就可以工作了。
但是,从字符串构造变量名通常不是一个好主意。请改用dict:

dfs = {}
for f in files:
    dfs[f] = pd.read_csv(f)

相关问题