簡體   English   中英

"從多個文件創建熊貓數據框"

[英]creating pandas data frame from multiple files

我正在嘗試創建一個 pandas DataFrame<\/code> ,它適用於單個文件。 如果我需要為具有相同數據結構的多個文件構建它。 因此,我有一個文件名列表,而不是單個文件名,我想從中創建DataFrame<\/code> 。

不確定在 pandas 中附加到當前DataFrame<\/code>的方法是什么,或者 pandas 有沒有辦法將文件列表吸入DataFrame<\/code> 。

pandas concat命令是您的朋友。 假設您將所有文件都放在一個目錄 targetdir 中。 你可以:

  1. 列出文件列表
  2. 將它們加載為熊貓數據幀
  3. 並將它們連接在一起

`

import os
import pandas as pd

#list the files
filelist = os.listdir(targetdir) 
#read them into pandas
df_list = [pd.read_table(file) for file in filelist]
#concatenate them together
big_df = pd.concat(df_list)

可能效率低下,但...

為什么不使用read_csv來構建兩個(或更多)數據幀,然后使用 join 將它們放在一起?

也就是說,如果您提供一些數據或迄今為止您使用過的一些代碼,那么回答您的問題會更容易。

我可能會嘗試連接文件,然后再將它們提供給熊貓。 如果您使用的是 Linux 或 Mac,您可以使用cat ,否則一個非常簡單的 Python 函數就可以為您完成這項工作。

這些文件是 csv 格式嗎? 您可以使用 read_csv。 http://pandas.sourceforge.net/io.html

讀取文件並將其保存在兩個數據幀中后,您可以合並兩個數據幀或向兩個數據幀之一添加額外的列(假設有公共索引)。 Pandas 應該能夠填充缺失的行。

import os
import pandas as pd
data = []

thisdir = os.getcwd()

for r, d, f in os.walk(thisdir):
    for file in f:
        if ".docx" in file:
            data.append(file)

df = pd.DataFrame(data)

這是一個簡單的解決方案,它避免使用列表來保存所有數據框,如果您不需要它們在列表中,它會為每個文件創建一個數據框,然后您可以pd.concat<\/code>它們。

import fnmatch

# get the CSV files only
files = fnmatch.filter(os.listdir('.'), '*.csv')
files

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM