2012-05-11 50 views
12

Tôi đang cố gắng tạo một chú gấu trúc DataFrame và nó hoạt động tốt cho một tệp. Nếu tôi cần xây dựng nó cho nhiều tệp có cùng cấu trúc dữ liệu. Vì vậy, thay vì tên tập tin duy nhất tôi có một danh sách các tên tập tin mà từ đó tôi muốn tạo ra DataFrame.tạo khung dữ liệu gấu trúc từ nhiều tệp

Không chắc chắn cách để gắn thêm vào hiện tại DataFrame trong gấu trúc hoặc là có cách để gấu trúc hút danh sách tệp vào DataFrame.

Trả lời

21

Lệnh pandas concat là bạn của bạn tại đây. Giả sử bạn có tất cả các tệp trong thư mục, targetdir. Bạn có thể:

  1. lập danh sách các tập tin
  2. tải chúng như gấu trúc dataframes
  3. và nối chúng lại với nhau

'

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) 
+0

Glob sẽ là hoàn hảo cho bước đầu tiên. Bạn có thể tạo danh sách các tệp bằng cách sử dụng ký tự đại diện. – thecircus

+1

Trong trường hợp sử dụng của tôi, tôi cần làm 'pd.concat (df_list, ignore_index = True, axis = 1)' vì mỗi tệp csv biểu diễn một cột – zje

1

Tôi có thể thử ghép các tệp trước khi cho chúng ăn gấu trúc. Nếu bạn đang sử dụng Linux hoặc Mac, bạn có thể sử dụng cat, nếu không một hàm Python rất đơn giản có thể thực hiện công việc cho bạn.

+0

chắc .. chỉ tò mò nếu có là một cách để làm điều này mà không cần kết hợp tất cả các tệp. Cảm ơn bạn đã trả lời nhanh chóng của bạn Jose – Abhi

0

Những tệp này có ở định dạng csv hay không. Bạn có thể sử dụng read_csv. http://pandas.sourceforge.net/io.html

Khi bạn đã đọc tệp và lưu nó trong hai khung dữ liệu, bạn có thể hợp nhất hai khung dữ liệu hoặc thêm cột bổ sung vào một trong hai khung dữ liệu (giả sử chỉ mục chung). Gấu trúc có thể điền vào các hàng bị thiếu.

3

có khả năng khủng khiếp không hiệu quả nhưng ...

Tại sao không sử dụng read_csv, để xây dựng hai (hoặc nhiều hơn) dataframes, sau đó sử dụng tham gia đặt chúng lại với nhau?

Điều đó nói rằng, sẽ dễ dàng hơn để trả lời câu hỏi của bạn nếu bạn cung cấp một số dữ liệu hoặc một số mã bạn đã sử dụng cho đến thời điểm này.

Các vấn đề liên quan