【问题标题】:Appending a Pandas .read_excel dataframe to a new dataframe将 Pandas .read_excel 数据帧附加到新数据帧
【发布时间】:2023-04-10 02:51:01
【问题描述】:

我正在尝试将几个 XLS 文件读入 Panda 的数据框。它们似乎正确读取 - 但是当我尝试显示(df)、df.info()或 df.head()时,数据框为空。

所有数据都在名为data1 的子文件夹中。 xls 工作表名为 a.xlsb.xls

数据集如下:

a.xls

Account Description Final   Adjustment  Adj Final
324     Testing1    2342             0   2342
232     Essential   5678             0   5678
35      Options     2345             0   2345
634     Working       45          5675   5720
23      Time       45774             0  45774
52      Styling       67             0     67

b.xls

Account Description Final   Adjustment  Adj Final
343     Visual        345            0    345
576     IO Tools    34543            0  34543
6567    Options      6356            0   6356
8675    Pickling     7456         5675  13131
345     Clipboard    5678            0   5678
6365    Flat         2355          645   3000

代码:

import pandas as pd
import os
from IPython.display import display, HTML

df = pd.DataFrame()

for filename in os.listdir('data1'):
    if filename.endswith(".xls"):
        print(f'appending {filename}')
        data = pd.read_excel(os.path.join("data1", filename), sheet_name=0)
        display(data)
        df.append(data)
        display(df)
    else:
        print(f'skipping {filename}, wrong data type')

输出:

    appending a.xls
       Account  Description Final   Adjustment  Adj Final
    0      324     Testing1  2342            0       2342
    1      232    Essential  5678            0       5678
    2       35      Options  2345            0       2345
    3      634      Working    45         5675       5720
    4       23         Time 45774            0      45774
    5       52      Styling    67            0         67
    ___

    appending b.xls
       Account  Description Final   Adjustment  Adj Final
    0      343       Visual   345            0        345
    1      576     IO Tools 34543            0      34543
    2     6567      Options  6356            0       6356
    3     8675     Pickling  7456         5675      13131
    4      345    Clipboard  5678            0       5678
    5     6365         Flat  2355          645       3000
    ___

display(data) 生成上述表格,但display(df) 生成___。所以,不知何故,我正在将 excel 文件读入data,但它没有将其附加到df

df.info() 产生:

<class 'pandas.core.frame.DataFrame'>
Index: 0 entries
Empty DataFrame

我的问题是如何将appenddata 放入多个excel 工作簿的单个数据框(df)中。

【问题讨论】:

  • Jupyter Notebook 中的 env 是 py3.6 - 因此是 IPython.display

标签: python excel python-3.x pandas dataframe


【解决方案1】:

您永远不会重新分配变量df,那么您的数据框是空的。你应该这样做:

df = df.append(data)

【讨论】:

  • 这是否意味着每次追加它都会破坏旧对象并创建一个新对象?
  • 好吧,在这种情况下是的。有时对于 pandas,您有一个 inplace 参数,可以让您修改当前对象,但显然不能修改 append
  • 在了解您的答案后,我找到了this。在挖掘细节时,它确实注意到将其他行附加到此帧的末尾,返回一个新对象。谢谢 - 现在一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 2020-02-27
  • 1970-01-01
  • 2017-07-07
相关资源
最近更新 更多