【问题标题】:Importing data from multiple files using python使用python从多个文件导入数据
【发布时间】:2021-03-01 12:52:48
【问题描述】:

我必须创建一个应用程序,我必须在其中导入给定文件夹中的所有 excel 文件并将其添加到数据框中。数据框应如下所示:

Expected Data Frame

如图所示,数据框的一列是文件名。

我已经在最终的dataframe中成功添加了该列,代码如下:

import pandas as pd
import os
import shutil
import re  
path = 'C:/Users/Administrator/Desktop/Zerodha/Day2'
lst = os.listdir(path)
files = [os.path.join(path,x) for x in lst]
print(lst)
dataframes_lst = []

for file in files:
 filename = file.split('/')[-1]
 dataframe = pd.read_csv(file, usecols=[0,4], names ["date",filename],index_col=["date"])
dataframes_lst.append(dataframe)

df = pd.concat(dataframes_lst, axis=1)

print(df)


df.to_csv('data.csv')

使用此代码获得的数据框如下所示:

作为参考,我将附上其中一个 excel 文件的 sn-p:

Excel snippet

还可以看到,获得了许多 nan 值。我尝试通过使用 pd.dropna(inplace = True) 函数以及按照这篇文章中的建议来删除它们:

  1. How to drop rows of Pandas DataFrame whose value in a certain column is NaN

但生成的数据框仍然包含 nan 值。

【问题讨论】:

  • 我已经通过使用fillna函数解决了nan问题

标签: python excel pandas dataframe


【解决方案1】:

试试这个:

import pandas as pd    
from pathlib import Path
read_path = Path('C:/Users/Administrator/Desktop/Zerodha/Day2')
    
df = pd.concat([pd.read_csv(path) for path in read_path.glob('*.csv')])

如果您想从 excel 中读取,只需使用 read_excel 并将模式更改为 '*.xlsx'

【讨论】:

  • 我正在获取数据,但与预期数据框中的预期不同。您的代码以 Excel sn-p 中提到的格式为我提供了数据。我需要它的格式,如预期数据帧中所述
【解决方案2】:

关于

我的疑问是如何遍历目录中的所有文件并以所需格式提取每个文件的数据

您可以遍历目录中的所有文件并将数据和文件名提取为数据框的标题,如下所示:

import pandas as pd
import os

path = './data'
lst = os.listdir('./data/')
files = [os.path.join(path,el) for el in lst]

example.xlsx的结构是:

dataframes_lst = []

for file in files:
    filename = file.split('/')[-1]
    dataframe = pd.read_excel(file, usecols=[3], names=[filename])
    dataframes_lst.append(dataframe)

df = pd.concat(dataframes_lst, axis=1)
print(df)

在这里,数据帧沿axis=1print(df)is 的输出连接

【讨论】:

  • 感谢您的宝贵时间。这是我一直在寻找的解决方案,
猜你喜欢
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多