从数组/列表连接熊猫数据框

时间:2020-02-26 20:41:45

标签: python arrays pandas dataframe

我正在尝试合并(合并)从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:无法连接类型为”的对象;只有Seri​​es和DataFrame objs有效

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

1 个答案:

答案 0 :(得分:1)

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

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