আমি কীভাবে দুটি ডেটা ফ্রেম একত্রিত করব?


105

আমি পান্ডসের ডেটা ফ্রেম ব্যবহার করছি। আমার একটি প্রাথমিক ডেটা ফ্রেম আছে, বলুন D। আমি এর থেকে এটির মতো দুটি ডেটা ফ্রেম বের করেছি:

A = D[D.label == k]
B = D[D.label != k]

তারপরে আমি লেবেলটি পরিবর্তন করি AএবংB

A.label = 1
B.label = -1

আমি এ এবং বি একত্রিত করতে চাই যাতে আমি তাদের একটি ডেটা ফ্রেম হিসাবে রাখতে পারি, ইউনিয়ন অপারেশনের মতো কিছু। তথ্য ক্রম গুরুত্বপূর্ণ নয়। তবে, আমরা যখন ডি থেকে A এবং B নমুনা করি তখন তারা তাদের সূচকগুলি ডি থেকে ধরে রাখে retain

উত্তর:


148

আমি বিশ্বাস করি আপনি appendপদ্ধতিটি ব্যবহার করতে পারেন

bigdata = data1.append(data2, ignore_index=True)

তাদের সূচিগুলি কেবল ignore_indexকীওয়ার্ডটি ব্যবহার করবেন না ...


1
এইটা কাজ করে. যদিও এটি একটি নতুন ডেটাফ্রেম তৈরি করে। এটি ইনলাইন করার কোনও উপায় আছে? ব্যাচগুলিতে যখন আমি একটি ডাটাবেস থেকে প্রচুর পরিমাণে ডেটা লোড করছি তখন এটির জন্য সুন্দর হবে যাতে আমি প্রতিবার একটি অনুলিপি তৈরি না করে পুনরায় পুনরায় ডেটাফ্রেম আপডেট করতে পারি।
অ্যান্ড্রু

1
হ্যাঁ, এটি সম্ভব, দেখুন: স্ট্যাকওভারফ্লো.com
মার্টিন-মার্টিন

91

আপনি pd.concatদুটি টিরও বেশি ডেফ্রেমে যোগদান করার সময় এটি বিশেষত সহায়ক: আপনিও ব্যবহার করতে পারেন :

bigdata = pd.concat([data1, data2], ignore_index=True, sort=False)

আমি এটি ব্যবহার করতে চাই, তবে আমি একই নামের দুটি কলাম যুক্ত করার চেষ্টা করছি o_O
জীবনকালীন

45

কেউ এটির দরকারী মনে হলে এটি এখানে যুক্ত করার ভেবেছিল। @ostrokach ইতিমধ্যে উল্লেখ করেছে যে কীভাবে আপনি সারিগুলির মধ্যে ডেটা ফ্রেমগুলি মার্জ করতে পারবেন

df_row_merged = pd.concat([df_a, df_b], ignore_index=True)

কলামগুলি জুড়ে মার্জ করতে, আপনি নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করতে পারেন:

df_col_merged = pd.concat([df_a, df_b], axis=1)

14

এই মামলার আরও একটি সমাধান রয়েছে যে আপনি বড় ডেটা নিয়ে কাজ করছেন এবং একাধিক ডেটাসেটকে একত্রিত করতে হবে। concatকর্মক্ষমতা-নিবিড় পেতে পারেন, সুতরাং আপনি যদি প্রতিবার একটি নতুন ডিএফ তৈরি করতে না চান তবে আপনি পরিবর্তে একটি তালিকা বোধগম্যতা ব্যবহার করতে পারেন :

frames = [ process_file(f) for f in dataset_files ]
result = pd.append(frames)

( বিভাগটির নীচে ডক্সে এখানে উল্লেখ করা হয়েছে ):

দ্রষ্টব্য : তবে এটি লক্ষণীয় যে, concat(এবং সেইজন্য append) ডেটার একটি সম্পূর্ণ অনুলিপি তৈরি করে এবং ক্রমাগত এই ফাংশনটি পুনরায় ব্যবহার করা একটি গুরুত্বপূর্ণ পারফরম্যান্স হিট তৈরি করতে পারে। আপনার যদি বেশ কয়েকটি ডেটাসেটের সাহায্যে অপারেশনটি ব্যবহার করতে চান তবে একটি তালিকা উপলব্ধি ব্যবহার করুন।


2

আপনি যদি df1দ্বিতীয় ডেটাফ্রেমের মানগুলির সাথে প্রথম ডাটাফ্রেমের মানগুলি আপডেট / প্রতিস্থাপন করতে চান df2। আপনি পদক্ষেপগুলি অনুসরণ করে এটি করতে পারেন -

পদক্ষেপ 1: প্রথম ডেটাফ্রেমের সেট সূচক (df1)

df1.set_index('id')

পদক্ষেপ 2: দ্বিতীয় ডেটাফ্রেমের সেট সূচক (df2)

df2.set_index('id')

এবং অবশেষে নিম্নলিখিত স্নিপেট ব্যবহার করে ডেটাফ্রেম আপডেট করুন -

df1.update(df2)

0

1 ম ডেটা ফ্রেম

train.shape

ফলাফল:-

(31962, 3)

2 য় ডেটা ফ্রেম

test.shape

ফলাফল:-

(17197, 2)

মেশা

new_data=train.append(test,ignore_index=True)

চেক

new_data.shape

ফলাফল:-

(49159, 3)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.