有没有办法从我的cwd创建两种类型的xlsx文档的两个dataFrames

时间:2019-06-19 16:24:16

标签: python dataframe append

我想对24个excel doc的12个进行分析,其中12个包含故事的一侧,另一12个包含另一侧。我设法将它们加载到python中,但是当我尝试将它们放入两个单独的数据帧中时,python将它们组合回了一个。

这是用于使用Python3.7的Windows服务器

import pandas as pd
import os

path = os.getcwd()

files = os.listdir(path)

files

files_car = [f for f in files if f.startswith("CAR")]

files_car

for f in files_car:

    data1 = pd.read_excel(f)

    car = car.append(data1)

path = os.getcwd()

files2 = os.listdir(path)

files2

files_ean = [f for f in files2 if f.startswith("ELEK")]

files_ean

ean = pd.DataFrame()

for x in files_ean:

    data2 = pd.read_excel(f)

    ean = ean.append(data2)

我希望files_car将包含以“ CAR”开头的12个文件 然后file_ean以“ ELEK”开头的12个文件

1 个答案:

答案 0 :(得分:0)

这应该根据您的评论做您想要的:

import pandas as pd
import os

path = os.getcwd()
files = os.listdir(path)

car_dfs = [pd.read_excel(f) for f in files if f.startswith("CAR")]
ean_dfs = [pd.read_excel(f) for f in files if f.startswith("ELEK")]

car_df = pd.concat(files_car)
ean_df = pd.concat(files_ean)

点对:

  • 如果您要运行相同的命令(即files),则无需重新创建os.listdir(path),除非要更改路径
  • 您不应像执行循环那样append循环到DataFrame,因为每次调用append都会创建一个副本。最好创建一个DataFrames列表,然后将该列表连接到一个大DataFrame中。

您可以通过以下操作进一步缩短此时间:

import pandas as pd
import os

path = os.getcwd()
files = os.listdir(path)

car_df = pd.concat([pd.read_excel(f) for f in files if f.startswith("CAR")])
ean_df = pd.concat([pd.read_excel(f) for f in files if f.startswith("ELEK")])

除非您需要单个文件DataFrames