【发布时间】:2020-09-27 04:10:30
【问题描述】:
我猜这个问题并非特定于熊猫。 我试图在一个文件夹中找到所有 xls 文件,用 pandas 读取它们并将它们中的每一个写入数据框。之后我想将所有数据帧连接到一个。
在循环中,我使用此命令重命名每个数据帧并带有日期戳(以便保留它以供以后连接):
exec("%s = %s" % ('data_'+date,'data'))
然后将新的数据框名称附加到列表中:
dataframes = dataframes + 'data_'+date
当我尝试通过以下方式连接此列表时:
data_total = pd.concat(dataframes)
我不断收到错误:
TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid
我知道制作字符串列表是行不通的,我应该建立一个数据框列表。我该怎么做呢?当我手头没有明确的变量名时,我很难理解如何进行分配。
更新: 我发布了更多代码以便更好地理解。
# filepaths is a list of paths to excel files in the folder
dataframes = []
for file in filepaths:
date = file[-14:-4] # Read date from file name
data = pd.read_excel(file) # Read excel sheet
exec("%s = %s" % ('data_'+date,'data')) # rename data frame
dataframes = dataframes + 'data_'+date # Update list of data frames for concatenation below
data_total = pd.concat(dataframes)
谢谢, 塞巴斯蒂安
【问题讨论】:
-
欢迎堆栈溢出!请以minimal reproducible example 的形式发布您的所有代码,我们可以执行或至少直接阅读。还包括完整的traceback,因为这对调试很有帮助。谢谢!
-
感谢您的建议。我添加了一个瘦身版。
-
您必须将
data(的副本)添加到数据帧,而不是字符串'data_'+date。 -
谢谢卢伊克。我正在通过重命名来制作副本。然后您将如何将此副本添加到列表中?