读取多个csv文件时保留文件名

时间:2019-04-11 05:26:33

标签: python-3.x

我正在阅读多个csv,每个csv都包含有关单个股票的数据。我正在使用下面的代码单独阅读它们以进行比较。数据可以很好地使用,但是读入时我丢失了csv文件的名称。因此我不知道哪个数据框是python中的哪个库存。有没有办法用csv文件的名称记录或标记每个数据帧?

path =r'/Users/Name/Desktop/STAT 3250 Data Analysis With Python/Stocks'
filenames = glob.glob(path + "/*.csv")

allsep = []
for filename in filenames:
    df = pd.read_csv(filename, index_col=None)
    allsep.append(df)

3 个答案:

答案 0 :(得分:0)

使用字典。

path =r'/Users/Name/Desktop/STAT 3250 Data Analysis With Python/Stocks'
filenames = glob.glob(path + "/*.csv")

allsep = {}
for filename in filenames:
    df = pd.read_csv(filename, index_col=None)
    allsep[filename] = df

您可以使用文件名访问每个文件的DF:

allsep['somefile.csv']

答案 1 :(得分:0)

这是您要寻找的吗?:

path =r'/Users/Name/Desktop/STAT 3250 Data Analysis With Python/Stocks'
filenames = glob.glob(path + "/*.csv")

allsep = []
for filename in filenames:
    df = pd.read_csv(filename, index_col=None)
    allsep.append((df,filename))

列表中的每个文件现在都是一个元组,具有对应的文件名。如果您希望能够引用数据框本身作为文件名,则可以将其添加为属性,并稍后引用:

path =r'/Users/Name/Desktop/STAT 3250 Data Analysis With Python/Stocks'
filenames = glob.glob(path + "/*.csv")

allsep = []
for filename in filenames:
    df = pd.read_csv(filename, index_col=None)
    df.name = filename
    allsep.append()

答案 2 :(得分:0)

您可以向每个Dataframe实例添加属性(例如filename)。

path =r'/Users/Name/Desktop/STAT 3250 Data Analysis With Python/Stocks'
filenames = glob.glob(path + "/*.csv")

allsep = []
for filename in filenames:
    df = pd.read_csv(filename, index_col=None)
    df.filename = filename
    allsep.append(df)

添加此属性后,可以将其用作常规属性。例如,如果您需要一个包含所有文件名的列表,则可以执行以下操作:

filenames = list(map(getattr, allsep, ['filename']*len(allsep)))

或者您可以通过常规方式访问属性:df.filename