首页 > 解决方案 > 从数组/列表中加入熊猫数据框

问题描述

我正在尝试合并(连接)从 csv 文件中选择的数据帧。我以前手动实现了这一点,但想使用(tkinter)文件对话框,以便用户可以选择一个或多个文件在数据框中使用。我所拥有的是:

  1. 将文件名读入数组,直到用户按下取消 - 一切都好
while True:
    root = Tk()
    root.withdraw()
    filename = filedialog.askopenfilename(title='Open data file', filetypes=(("Comma separated values", "*.csv"),))
    if filename =="":
        break
    filenames.append(filename)
  1. 使用文件名生成数据框 - 单独都很好(我认为,因为它们打印正常)
def read_Yokogawa(filename):
    frame = pd.read_csv(filename, header = 46, skiprows = [47, 48], low_memory = False, parse_dates = True, infer_datetime_format = True, na_values = ['+OVER', '-OVER'])
    print(frame)
    return frame

dfs=[]  #Set an empty array of dataframes
for filename in filenames:
    dfs.append([read_Yokogawa(filename)])   #Append each dataframe to the array
  1. 将数据帧数组连接在一起 -不好
df = pd.concat(dfs)

我收到错误:TypeError: cannot concatenate object of type ''; 只有 Series 和 DataFrame obj 是有效的

所有文件都具有相同的列,因为它们是由相同的软件生成的。我也试过pd.concat([dfs]),但得到同样的错误。

标签: pythonarrayspandasdataframe

解决方案


@Quang 和 @Renaud 都提出了同样的建议,结果证明这是对这个问题的一个很好的回答。

dfs=[]
for filename in filenames:
    dfs.append(read_Yokogawa(filename))
df = pd.concat(dfs)

推荐阅读