اذهب إلى المحتوى
  • 0

تحميل أكثر من ملف csv ودمجهم سوياً في pandas

Mohamed Elnemr

السؤال

لدي عدة ملفات على شكل csv وأريد تحميلهم في pandas على هيئة dataframes بحيث يتم دمجهم سويا في dataframe واحدة كبيرة، حاولت إستخدام الكود التالي لكنه لم يفلح:

import glob
import pandas as pd

# تحميل الملفات
path =r'C:\DRO\DCL_rawdata_files'
filenames = glob.glob(path + "/*.csv")

dfs = []
for filename in filenames:
    dfs.append(pd.read_csv(filename))

# جمع الملفات في ملف واحد
big_frame = pd.concat(dfs, ignore_index=True)

كيف يمكنني فعل هذا؟

تم التعديل في بواسطة Mohamed Elnemr
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك القيام بذلك بالشكل التالي من خلال استخدام الدالة map والدالة concat التي تقوم بعملية الربط بين الجداول:

import glob
import os
import pandas as pd
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "my_files*.csv"))))

ومن الأفضل تحديد المسار من خلال os.path.join. أو بالشكل التالي بدون استخدام map:

path = r'C:\DRO\DCL_rawdata_files'   
# قراءة كل الملفات
all_files = glob.glob(os.path.join(path, "*.csv")) 
#Dataframes يحوي كل ال tuple إنشاء 
df_from_each_file = (pd.read_csv(f) for f in all_files) 
#concat الآن ربطهما من خلال الدالة 
concatenated_df   = pd.concat(df_from_each_file, ignore_index=True)

كما يمكنك استخدام Dask حيث يمكنها قراءة الداتافريم من عدة ملفات:

import dask.dataframe as read
df = read.read_csv('data*.csv')

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الكود الذي قمت بكتابته هو صحيح الا حد كبير الا انه ينقصه جزء صغير، يمكنك النظر في الكود التالي:

import pandas as pd
import glob

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

لاحظ أنني قمت بوضع header = 0 وذلك لجعل أول صف في ملفات ال csv هو عنوان العمود.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...