পান্ডাস ডেটা ফ্রেমে কলাম যুক্ত করুন


111

এটি সম্ভবত সহজ তবে আমার কাছে নিম্নলিখিত ডেটা রয়েছে:

ডেটা ফ্রেম 1 এ:

index dat1
0     9
1     5

ডেটা ফ্রেম 2 এ:

index dat2
0     7
1     6

আমি নিম্নলিখিত ফর্ম সহ একটি ডেটা ফ্রেম চাই:

index dat1  dat2
0     9     7
1     5     6

আমি appendপদ্ধতিটি ব্যবহার করার চেষ্টা করেছি , তবে আমি ক্রস জয়েন (যেমন কার্টেসিয়ান পণ্য) পেয়েছি get

এটি করার সঠিক উপায় কী?


4
আপনি কি joinপদ্ধতিটি চেষ্টা করেছিলেন ?
ব্রেণবার্ন

4
ডেটা_ফ্রেম_1 ['ডাটা 2'] = ডেটা_ফ্রেম_2 ['ডাটা 2']
লোটেক

@ ব্লটেক: সূচিগুলি সঠিকভাবে জুড়ে দেওয়া নিশ্চিত করে?
বেনডুন্ডি

@ বেনডুন্দি: হ্যাঁ তা করে
1713

উত্তর:


140

সাধারণভাবে মনে হচ্ছে আপনি কেবল যোগদানের সন্ধান করছেন:

> dat1 = pd.DataFrame({'dat1': [9,5]})
> dat2 = pd.DataFrame({'dat2': [7,6]})
> dat1.join(dat2)
   dat1  dat2
0     9     7
1     5     6

46
বা pd.concat([dat1, dat2], axis=1)এই ক্ষেত্রে।
ডিএসএম

4
@ বেনডুন্ডি যোগ দিন এবং কনট্যাট হুডের নীচে প্রচুর কোড ব্যবহার করুন, সুতরাং যখন আপনি প্রান্তের মামলাগুলি বিবেচনা করেন তখন "ডান" উপায়টি কেবল তখনই গুরুত্বপূর্ণ। উদাহরণস্বরূপ এখানে যদি উভয় ডেটাফ্রেমে একটি 'ডেটা' কলাম থাকে তবে যোগদানটি ব্যর্থ হয়ে যায় , যেখানে একটি কনক্যাট আপনাকে 'ডেটা' নামে দুটি কলাম দেয়।
U2EF1

@ ইউ 2 ই এফ 1: আমি আপনার প্রতিক্রিয়া বনাম আমার সম্পর্কে কথা বলছিলাম। একটি বিড়ালকে ত্বকে নেওয়ার জন্য সর্বদা N উপায় রয়েছে :)
বেনডুন্ডি

@ বেনডুন্ডি আমি দেখছি এই পদ্ধতিটি অনন্য সূচকটিকে ত্যাগ করে এবং আরও জটিল ক্ষেত্রে এমনকি অদ্ভুত পার্শ্ব প্রতিক্রিয়া দেখায়। উদাহরণস্বরূপ, যদি আমার কাছে 'ডেটা' নামে দুটি কলাম থাকে, তবে গ্রুপিং / সামিং বিভিন্ন ডেটা কলামগুলিকে সংমিশ্রণ করতে শুরু করবে, যা আপনি অবশ্যই চান না certainly স্ট্রিং ডেটা একত্রিত করা হবে।
U2EF1

4
@ জেরেমি-জেড দ্বারা নির্দেশিত হিসাবে, উভয় ডেটাসেটে সূচকগুলি একই সূচিটি ভাগ না করাতে পুনরায় সেট করা খুব গুরুত্বপূর্ণ। অন্যথায় আপনি প্রচুর NaN সারি সহ একটি ডেটাসেট পাবেন।
ইস্রায়েল ভারে


41

উভয় join()এবং concat()উপায় সমস্যার সমাধান করতে পারে। তবে, এখানে একটি সতর্কতা আমার উল্লেখ করতে হবে: আপনার আগে সূচিটি পুনরায় সেট করুন join()বা concat()আপনি যদি অন্য ডেটা ফ্রেম থেকে কিছু সারি নির্বাচন করে কিছু ডেটা ফ্রেম নিয়ে কাজ করার চেষ্টা করছেন।

নীচের একটি উদাহরণ যোগদান এবং কনকটের কিছু আকর্ষণীয় আচরণ দেখায়:

dat1 = pd.DataFrame({'dat1': range(4)})
dat2 = pd.DataFrame({'dat2': range(4,8)})
dat1.index = [1,3,5,7]
dat2.index = [2,4,6,8]

# way1 join 2 DataFrames
print(dat1.join(dat2))
# output
   dat1  dat2
1     0   NaN
3     1   NaN
5     2   NaN
7     3   NaN

# way2 concat 2 DataFrames
print(pd.concat([dat1,dat2],axis=1))
#output
   dat1  dat2
1   0.0   NaN
2   NaN   4.0
3   1.0   NaN
4   NaN   5.0
5   2.0   NaN
6   NaN   6.0
7   3.0   NaN
8   NaN   7.0

#reset index 
dat1 = dat1.reset_index(drop=True)
dat2 = dat2.reset_index(drop=True)
#both 2 ways to get the same result

print(dat1.join(dat2))
   dat1  dat2
0     0     4
1     1     5
2     2     6
3     3     7


print(pd.concat([dat1,dat2],axis=1))
   dat1  dat2
0     0     4
1     1     5
2     2     6
3     3     7

ভাল বলেছেন এবং ভাল পয়েন্ট। আমি সূচকটি পুনরায় সেট না করে চেষ্টা করেছি এবং পুরো অনেকগুলি নালস তৈরি করেছি
আনন্দ

পুনরায় সেট করার পদক্ষেপটি না করে আমার ডেটাটি ভাল এবং ভাল লাগছিল, তবে স্পষ্টতই কিছু দৃশ্যপটের পিছনে ভালভাবে কাজ করে নি। এটা ইশারা জন্য ধন্যবাদ! পুনরায় সেট আমার মডেল আপ এবং চলমান!
আয়নুয়ে সিউটা

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত! যদি আমরা সূচিটি পুনরায় সেট না করি তবে এটি সর্বদা NaN গুলি উত্পন্ন করে।
শ্রীভাতসান

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


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