我在for循环中访问一系列Excel文件.然后我将excel文件中的数据读取到pandas数据帧.我无法弄清楚如何将这些数据帧附加到一起,然后将数据帧(现在包含来自所有文件的数据)保存为新的Excel文件.
这是我试过的:
for infile in glob.glob("*.xlsx"):
data = pandas.read_excel(infile)
appended_data = pandas.DataFrame.append(data) # requires at least two arguments
appended_data.to_excel("appended.xlsx")
Run Code Online (Sandbox Code Playgroud)
谢谢!
我知道有几种方法可以在Pandas中构建数据帧.我的问题只是理解为什么下面的方法不起作用.
首先,一个工作的例子.我可以创建一个空数据框,然后添加一个类似于documenta的新数据框
In [3]: df1 = pd.DataFrame([[1,2],], columns = ['a', 'b'])
...: df2 = pd.DataFrame()
...: df2.append(df1)
Run Code Online (Sandbox Code Playgroud)
Out[3]: a b
0 1 2
但是,如果我执行以下操作,则df2变为None:
In [10]: df1 = pd.DataFrame([[1,2],], columns = ['a', 'b'])
...: df2 = pd.DataFrame()
...: for i in range(10):
...: df2.append(df1)
In [11]: df2
Out[11]:
Empty DataFrame
Columns: []
Index: []
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么它这样工作?谢谢!
假设我有一个脚本,该脚本从数据库中将数据读取到数据帧中,在该数据帧上运行一些逻辑,然后将结果数据帧导出到另一个数据库表中,如下所示。问题是exec函数之后,transform.py中的数据帧不会被覆盖。
注意:这是一个简单的示例,用于说明问题,而不是我尝试使用此方法解决的实际问题。
期望:
执行前
+---------+---------------+--------------+----------+
| metric | modified_date | current_date | datediff |
+---------+---------------+--------------+----------+
| metric1 | 2019-03-31 | 2019-05-03 | 33 |
| metric2 | 2019-03-31 | 2019-05-03 | 33 |
| metric3 | 2019-03-31 | 2019-05-03 | 33 |
| metric4 | 2019-03-20 | 2019-05-03 | 44 |
+---------+---------------+--------------+----------+
Run Code Online (Sandbox Code Playgroud)
执行后
+---------+---------------+--------------+----------+
| metric | modified_date | current_date | datediff |
+---------+---------------+--------------+----------+
| metric4 | 2019-03-20 | 2019-05-03 | 44 |
+---------+---------------+--------------+----------+
Run Code Online (Sandbox Code Playgroud)
实际:
执行前
+---------+---------------+--------------+----------+ …Run Code Online (Sandbox Code Playgroud)