ধ্রুবক মান সহ ডেটাফ্রেমে কলাম যুক্ত করুন


186

আমার একটি বিদ্যমান ডেটাফ্রেম রয়েছে যা আমাকে অতিরিক্ত কলাম যুক্ত করতে হবে যাতে প্রতি সারিতে একই মান থাকবে।

বিদ্যমান ডিএফ:

Date, Open, High, Low, Close
01-01-2015, 565, 600, 400, 450

নতুন ডিএফ:

Name, Date, Open, High, Low, Close
abc, 01-01-2015, 565, 600, 400, 450

আমি জানি কীভাবে কোনও বিদ্যমান সিরিজ / ডেটাফ্রেম কলাম যুক্ত করতে হয়। তবে এটি একটি পৃথক পরিস্থিতি, কারণ আমার কেবল প্রয়োজন 'নাম' কলামটি যুক্ত করা এবং প্রতিটি সারি একই মানতে সেট করা, এই ক্ষেত্রে 'এবিসি'।

উত্তর:


293

df['Name']='abc' নতুন কলাম যুক্ত করবে এবং সেই মানটিতে সমস্ত সারি সেট করবে:

In [79]:

df
Out[79]:
         Date, Open, High,  Low,  Close
0  01-01-2015,  565,  600,  400,    450
In [80]:

df['Name'] = 'abc'
df
Out[80]:
         Date, Open, High,  Low,  Close Name
0  01-01-2015,  565,  600,  400,    450  abc

34
এটি করার অন্য কোনও উপায় আছে? আমি নিম্নলিখিত সতর্কতা পাচ্ছি। একটি ডেটা ফ্রেম থেকে একটি স্লাইসের অনুলিপিটিতে একটি মান সেট করার চেষ্টা করা হচ্ছে। পরিবর্তে .loc [row_indexer, col_indexer] = মান ব্যবহার করে দেখুন। ডকুমেন্টেশনের ক্যাভেটগুলি
বিষ্ণু বিশ্বনাথ

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

@ বিষ্ণুভিসওয়ানাথ যখন আমি জপিটার নোটবুক ব্যবহার করি তখন আপনার মতো ঠিক একই সতর্কতাটি পাই। আমার কাছে যখন তুচ্ছ ডেটা ফ্রেম আকার (> 200 রেকর্ড) থাকে এবং নির্দিষ্ট কিছু অ্যাসাইনমেন্ট থাকে এবং কেবল df মুদ্রণ করে তা আমার ক্ষেত্রে ঘটে।
বিল

4
@ বিষ্ণুবিসনাথ আপনি সম্ভবত এর আগে মূল ডেটাফ্রেমের একটি স্লাইস তৈরি করেছেন এবং তারপরে সেই স্লাইসে নতুন কলামটি সেট করার চেষ্টা করছেন। পরিবর্তে আসল ডাটাফ্রেমে নতুন কলাম যুক্ত করুন এবং তারপরে স্লাইসটি তৈরি করুন। সম্ভবত আপনি যখন কোনও ডেটাফ্রেমের স্লাইস তৈরি করেন, পান্ডাস একটি অনুলিপি তৈরি করেন না এবং কোনওভাবে এটি মূল ডেটাফ্রেম থেকে পরিচালনা করেন। এই অপটিমাইজেশনের সাথে এই ধরণের অশান্তি, এবং তাই সতর্কতা।
amit_saxena

2
উল্লিখিত পান্ডাস সতর্কবার্তাটি প্রমাণ করার জন্য, এটি ব্যবহারের .copy()আগে কেবল ডেটাফ্রেমের একটি অনুলিপি পান (যদি না এটি বিশাল বা কিছু বা কার্য সম্পাদন সত্যই গণনা করা হয়)।
ম্যাটানস্টার

61

আপনি insertনতুন কলামটি কোথায় থাকতে চান তা নির্দিষ্ট করে ব্যবহার করতে পারেন । এই ক্ষেত্রে, আমি 0বামদিকে নতুন কলামটি রাখার জন্য ব্যবহার করব ।

df.insert(0, 'Name', 'abc')

  Name        Date  Open  High  Low  Close
0  abc  01-01-2015   565   600  400    450

এটি আমার পক্ষে কাজ করে না। আমার মূল ম্যাট্রিক্স 1460 x 41 এবং আমি সামনে 1-এর কলাম যোগ করার চেষ্টা করছি: df.insert(0,'coef_fix',1)। আমি পাইথন 3.0
কলিনম্যাক

2
আমার জন্য ভাল কাজ করে। আপনি বুঝতে পারছেন না যে এটি insertপরিচালনা করে inplace। এর অর্থ হল যে নতুন ডেটা ফ্রেমের মান ফিরে পাওয়া যায়নি তবে আসল ডেটা ফ্রেমটি পরিবর্তন করা হয়েছে। এটি ব্যবহার করে দেখুনdf = pd.DataFrame(0, range(1460), range(41)); df.insert(0, 'coef_fix', 1); df
পিআইআর স্কয়ারড

44

একা লাইনার কাজ করে

df['Name'] = 'abc'

একটি Nameকলাম তৈরি করে এবং সমস্ত সারিকে abcমান হিসাবে সেট করে


41

অন্যরা কী পরামর্শ দিয়েছে তার সংক্ষিপ্তকরণ এবং তৃতীয় উপায় যুক্ত করুন

আপনি পারেন:

  • বরাদ্দ করুন (** কাওয়ার্গ্স) :

    df.assign(Name='abc')
  • নতুন কলাম সিরিজ অ্যাক্সেস করুন (এটি তৈরি করা হবে) এবং এটি সেট করুন:

    df['Name'] = 'abc'
  • সন্নিবেশ করুন (লোক, কলাম, মান, অনুমতি_ নকল = মিথ্যা)

    df.insert(0, 'Name', 'abc')

    যেখানে আর্গুমেন্ট লক (0 <= লোক <= লেন (কলাম)) আপনাকে যেখানে চান কলামটি সন্নিবেশ করতে দেয়।

    'লোক' আপনাকে সূচি দেয় যে আপনার কলাম সন্নিবেশের পরে থাকবে । উদাহরণস্বরূপ, উপরের কোডটি 0-তম কলাম হিসাবে কলামের নাম সন্নিবেশ করান, অর্থাত এটি প্রথম কলামের আগে সন্নিবেশ করা হবে , নতুন প্রথম কলাম হবে। (সূচক 0 থেকে শুরু হয়)।

এই সমস্ত পদ্ধতি আপনাকে সিরিজ থেকে একটি নতুন কলামও যুক্ত করতে দেয় (কেবলমাত্র 'এবিসি' সিরিজের সাথে উপরের ডিফল্ট যুক্তিটির বিকল্প দিন)।

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