[英]creating pandas data frame from multiple files
我正在嘗試創建一個 pandas
DataFrame<\/code> ,它適用於單個文件。
如果我需要為具有相同數據結構的多個文件構建它。
因此,我有一個文件名列表,而不是單個文件名,我想從中創建
DataFrame<\/code> 。
不確定在 pandas 中附加到當前
DataFrame<\/code>的方法是什么,或者 pandas 有沒有辦法將文件列表吸入
DataFrame<\/code> 。
pandas concat
命令是您的朋友。 假設您將所有文件都放在一個目錄 targetdir 中。 你可以:
`
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.