Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python从excel工作表中提取和操作数据_Python_Excel_Pandas - Fatal编程技术网

用python从excel工作表中提取和操作数据

用python从excel工作表中提取和操作数据,python,excel,pandas,Python,Excel,Pandas,场景:我正在尝试编写一个python代码,该代码读取给定文件夹中的所有工作簿,获取每个工作簿的数据并将其放在单个数据帧中(每个工作簿都成为一个数据帧,因此我可以单独操作它们) Issue1:使用此代码,即使我使用了正确的路径和文件类型,我仍然会收到错误: File "<ipython-input-3-2a450c707fbe>", line 14, in <module> f = open(file,'r') FileNotFoundError: [Errno 2] N

场景:我正在尝试编写一个python代码,该代码读取给定文件夹中的所有工作簿,获取每个工作簿的数据并将其放在单个数据帧中(每个工作簿都成为一个数据帧,因此我可以单独操作它们)

Issue1:使用此代码,即使我使用了正确的路径和文件类型,我仍然会收到错误:

File "<ipython-input-3-2a450c707fbe>", line 14, in <module>
f = open(file,'r')

FileNotFoundError: [Errno 2] No such file or directory: '(1)Copy of 
Preisanfrage_17112016.xlsx'
Obs1:对于输出,并非所有日期都具有相同的标识符数组

问题1:你知道为什么代码会产生这个错误吗?有没有更好的方法从excel中提取数据

问题2:是否可以为每个工作表创建唯一的数据框?这是一种好的做法吗

问题3:我可以使用循环进行这种类型的输出吗?这是一种好的做法吗

Obs2:我不知道这有多重要,但我正在使用Python 3.6和Anaconda

到目前为止的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import glob, os
import datetime as dt
from datetime import datetime
import matplotlib as mpl


directory = os.path.join("C:\\","Users\\Dgms\\Desktop\\final 2")
for root,dirs,files in os.walk(directory):
for file in files:
    print(file)
    f = open(file,'r')
    df1 = pd.read_excel(file)

认为你不需要你的开放。我会将它们存储在一个列表中。您可以使用
pd.concat(dfs列表)
或一些手动更改

list_of_dfs = []
for root,dirs,files in os.walk(directory):
    for file in files:
        f = os.path.join(root, file)
        print(f)
        list_of_dfs .append(pd.read_excel(f))
或使用
glob

import glob
list_of_dfs = []
for file in glob.iglob(directory + '*.xlsx')
    print(file)
    list_of_dfs .append(pd.read_excel(file))
或者正如jackie建议的那样,您可以阅读特定的工作表
dfs.append(pd.concat([pd.read\u excel(文件“打开”),pd.read\u excel(文件“关闭”))
。如果您只有其中一个可用,您甚至可以更改为

try:
     list_of_dfs.append(pd.concat([pd.read_excel(file, 'Opening'))
except:
     pass
try: 
     list_of_dfs.append(pd.concat([pd.read_excel(file, 'Closing'))
except:
     pass

(当然,您应该指定确切的错误,但不能测试该atm)

问题1:如果您使用IDE或Jupyter,请将绝对路径放入文件。
或者将项目文件夹添加到系统路径(解决方法,不推荐)。

好主意,我刚刚尝试过,但也会产生相同的错误。我已经更改了目录名和文件名,但结果是一样的。您使用的是Jupyter笔记本,而不仅仅是Anaconda控制台吗?您需要使用整个文件路径,而不是文件名,因为Anaconda只查看其当前目录。此外,如果要指定正在读取的工作簿的工作表,和/或要合并所有工作表,可以执行dfs.append(pd.concat([pd.read\u excel(文件,'Opening')、pd.read\u excel(文件,'Closing'))的
list\u操作
@jack6e我正在使用spyder控制台。@Roelant第二部分工作得很好,但接下来,如果我从工作表“关闭”(一些工作簿)中有一些数据,从工作表“打开”(其他工作簿)中有一些数据,而有些工作簿既有也有,有些没有,在“阅读过程”中有什么方法吗把这些具体地结合起来?(我的意思是,开门见山,闭门见山等等)。
try:
     list_of_dfs.append(pd.concat([pd.read_excel(file, 'Opening'))
except:
     pass
try: 
     list_of_dfs.append(pd.concat([pd.read_excel(file, 'Closing'))
except:
     pass