【问题标题】:Python append versus concat with multiple files in a "For Loop" [closed]Python append 与 concat 在“For Loop”中使用多个文件 [关闭]
【发布时间】:2021-02-03 16:03:15
【问题描述】:

我有一个可行的解决方案,但我正试图准确了解为什么我的第一个解决方案无法更好地教育自己了解该主题。我正在尝试从 gov 网站加载多个 excel 文件并加载到一个数据框中进行分析。循环浏览列表很重要,因为该站点经常更新。

我的第一次尝试产生了一个空数据框。

import glob
import pandas as pd
df_list = pd.DataFrame()
for name in glob.glob('C:\Market research\Total Files\*.xls*'): 
    df = pd.read_excel(name)
    df.columns = df.columns.str.lower()
    df_list.append(df)
print(df_list)

这导致以下输出:

Empty DataFrame Columns: [] Index: []

我的第二次尝试是以下代码:

import glob
import pandas as pd

df_list = []
for name in glob.glob('C:\Market research\Total Files\*.xls*'): 
    df = pd.read_excel(name)
    df_list.append(df)
    df.columns = df.columns.str.lower()
jobs_df = pd.concat(df_list)

print(jobs_df.shape)
print(jobs_df.head())

这产生了以下结果,这是我所期望的。

  occ_code                        occ_title  group         tot_emp 
0  00-0000                  All Occupations    NaN       130307840   
1  11-0000           Management occupations  major         5960560   
2  11-1011                 Chief executives    NaN          321300   
3  11-1021  General and operations managers    NaN         1663810   
4  11-1031                      Legislators    NaN           61060   

为什么这些没有产生相同的结果?

【问题讨论】:

  • print(df1) 不应该在第一种情况下打印df_list 吗?
  • 你为什么在第一种方法中print(df1)
  • 顺便说一句,通常最好将数据帧收集到常规 python 列表中并将它们连接一次(您的第二个解决方案)。 append 每次都复制,因此随着更多文件的添加,第一个文件中的数据会被复制多次。
  • 抱歉,df1 的打印被搁置了。该问题已被编辑以反映 df_list,但结果是相同的。 '空数据框'

标签: python pandas append concat


【解决方案1】:

不管打印错误的变量:在您使用数据框df_list的第一个解决方案中

df_list.append(df)

创建一个新的数据框。您需要将其分配给变量

df_list = df_list.append(df)

您的第二种解决方案更可取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多