পান্ডে একটি ডেটা ফ্রেমে দুটি সিরিজের সংমিশ্রণ


277

আমার দুটি সিরিজ s1এবং s2একই (অবিচ্ছিন্ন) সূচক রয়েছে। আমি কিভাবে একত্রিত s1এবং s2একটি DataFrame হচ্ছে দুটি কলাম এবং তৃতীয় কলাম হিসাবে সূচকের এক রাখি?

উত্তর:


415

আমি মনে করি concatএটি করার একটি দুর্দান্ত উপায়। যদি তারা উপস্থিত থাকে তবে এটি সিরিজটির নাম বৈশিষ্ট্যগুলি কলাম হিসাবে ব্যবহার করে (অন্যথায় এটি কেবল তাদের সংখ্যা করে):

In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')

In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')

In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
   s1  s2
A   1   3
B   2   4

In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
  index  s1  s2
0     A   1   3
1     B   2   4

দ্রষ্টব্য: এটি 2 টিরও বেশি সিরিজ পর্যন্ত প্রসারিত।


5
এটি আসলে খুব অনুলিপি করা এড়ায় (ডিক্ট সমাধানের তুলনায়)
জেফ

একটি উদাহরণে, এটি আমাকে বলে চলেছে বলে মনে হচ্ছে 'ভ্যালুরইরার: একাধিক উপাদান সহ একটি অ্যারের সত্য মান অস্পষ্ট। A.any () বা a.all () 'ব্যবহার করুন - কোনও ধারণা?
ব্যবহারকারী 7289

@ ব্যবহারকারী7289 নিশ্চিত নয় যে এটি কোথা থেকে আসবে, আপনি কি এটি অন্য প্রশ্ন হিসাবে জিজ্ঞাসা করতে পারেন?
অ্যান্ডি হেডেন

@ অ্যান্ডি হেডেন: যদি একটি বা উভয় সূচকে ডুপ্লিকেট থাকে?
মান্নাগগিয়া

2
@ ড্যাফিংউজমান "" এই ক্রিয়াকলাপটি ক্রমাগত পুনরায় ব্যবহার করার অর্থ "এর অর্থ হ'ল আপনার বহুবার বা অনুরূপ বনাম একবার pd.concat([list_of_dataframes]) কনক্যাট করা পছন্দ করা উচিত new_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
অ্যান্ডি হেডেন

38

উভয়ের যদি একই সূচক থাকে তবে আপনি কেন .to_frame ব্যবহার করবেন না?

> = v0.23

a.to_frame().join(b)

< v0.23

a.to_frame().join(b.to_frame())

4
হতে পারে এটি আরও উপযুক্ত হবে: a.to_frame (নাম = 'এ') join যোগ দিন (b.to_frame (নাম = 'বি'))
user3282777

33

পান্ডারা স্বয়ংক্রিয়ভাবে এই পাস করা সিরিজগুলিতে স্বয়ংক্রিয়ভাবে প্রান্তিককরণ করবে এবং যৌথ সূচক তৈরি করবে তারা এখানে একই রকম হয়। reset_indexসূচকে একটি কলামে সরিয়ে দেয়।

In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])

In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])

In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]: 
   index        s1        s2
0      1 -0.176143  0.128635
1      2 -1.286470  0.908497
2      4 -0.995881  0.528050
3      5  0.402241  0.458870
4      6  0.380457  0.072251

16

উদাহরণ কোড:

a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})

পান্ডস আপনাকে একটি DataFrameথেকে মানগুলি এবং কী হিসাবে কলামের নামগুলি dictদিয়ে একটি তৈরি করতে দেয় Series। যখন এটি Seriesএকটি মান হিসাবে সন্ধান করে , এটি Seriesসূচকের অংশ হিসাবে সূচকটি ব্যবহার করে DataFrame। এই ডেটা প্রান্তিককরণ পান্ডাদের অন্যতম প্রধান সুবিধা। ফলস্বরূপ, আপনার অন্যান্য প্রয়োজন না থাকলে সদ্য তৈরি হওয়াটির DataFrameসদৃশ মান রয়েছে। উপরের উদাহরণে, data['idx_col']একই ডেটা আছে data.index


13

আমি যদি এই উত্তর দিতে পারে।

সিরিজটিকে ডেটা ফ্রেমে রূপান্তরিত করার পিছনের মৌলিক বিষয়গুলি এটি বুঝতে হবে

1. ধারণাগত স্তরে, ডেটা ফ্রেমের প্রতিটি কলাম একটি সিরিজ।

২. এবং, প্রতিটি কলামের নাম একটি মূল নাম যা একটি সিরিজকে মানচিত্র করে।

আপনি যদি দুটি ধারণাকে মাথায় রেখে থাকেন তবে আপনি সিরিজটিকে ডেটা ফ্রেমে রূপান্তর করার জন্য অনেকগুলি উপায় ভাবতে পারেন। একটি সহজ সমাধান এর মত হবে:

এখানে দুটি সিরিজ তৈরি করুন

import pandas as pd

series_1 = pd.Series(list(range(10)))

series_2 = pd.Series(list(range(20,30)))

স্রেফ কাঙ্ক্ষিত কলামের নাম সহ একটি খালি ডেটা ফ্রেম তৈরি করুন

df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])

ম্যাপিং ধারণাটি ব্যবহার করে ডেটা ফ্রেমের ভিতরে সিরিজ মান রাখুন

df['Column_name#1'] = series_1

df['Column_name#2'] = series_2

এখনই ফলাফলগুলি পরীক্ষা করুন

df.head(5)

6

নিশ্চিত না যে আমি আপনার প্রশ্নটি পুরোপুরি বুঝতে পেরেছি তবে আপনি কি এটি করতে চান?

pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)

( index=s1.indexএখানে এমনকি প্রয়োজনীয় নয়)



1

আমি আমার ন্যালি অ্যারে বা আইসারিগুলিকে ডেটাফ্রেমে রূপান্তর করতে প্যানডাস ব্যবহার করেছি তারপরে কী হিসাবে অতিরিক্ত ভবিষ্যতবাণী হিসাবে ভবিষ্যদ্বাণী হিসাবে যুক্ত এবং অতিরিক্ত করেছি। আপনার যদি প্রয়োজন হয় ডেটাফ্রেম কোনও তালিকায় ফিরে রূপান্তরিত হয় তবে মানগুলি ব্যবহার করুন। টোলিস্ট ()

output=pd.DataFrame(X_test)
output['prediction']=y_pred

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