মূল প্রশ্নটি একটি নির্দিষ্ট সংকীর্ণ ব্যবহারের ক্ষেত্রে সম্বোধন করে। যাদের আরও জেনেরিক উত্তর প্রয়োজন তাদের জন্য এখানে কয়েকটি উদাহরণ রয়েছে:
অন্যান্য কলামগুলি থেকে ডেটা ব্যবহার করে একটি নতুন কলাম তৈরি করা হচ্ছে
নীচে ডেটাফ্রেম দেওয়া হয়েছে:
import pandas as pd
import numpy as np
df = pd.DataFrame([['dog', 'hound', 5],
['cat', 'ragdoll', 1]],
columns=['animal', 'type', 'age'])
In[1]:
Out[1]:
animal type age
----------------------
0 dog hound 5
1 cat ragdoll 1
নীচে আমরা ক্রিয়াকলাপটি সিরিজের জন্য ওভাররাইড করা description
ব্যবহার করে অন্যান্য কলামগুলির সংলগ্ন হিসাবে একটি নতুন কলাম যুক্ত করছি +
। অভিনব স্ট্রিং ফর্ম্যাটিং, এফ-স্ট্রিংস ইত্যাদি এখানে কাজ করবে না যেহেতু +
স্কেলারের ক্ষেত্রে প্রযোজ্য এবং 'আদিম' মানগুলি নয়:
df['description'] = 'A ' + df.age.astype(str) + ' years old ' \
+ df.type + ' ' + df.animal
In [2]: df
Out[2]:
animal type age description
-------------------------------------------------
0 dog hound 5 A 5 years old hound dog
1 cat ragdoll 1 A 1 years old ragdoll cat
আমরা 1 years
বিড়ালের জন্য 1 year
পেয়েছি (পরিবর্তে ) যা আমরা নীচে শর্তযুক্ত ব্যবহার করে ঠিক করব।
শর্তসাপেক্ষে একটি বিদ্যমান কলাম পরিবর্তন করে
এখানে আমরা animal
অন্যান্য কলামের মানগুলির সাথে মূল কলামটি প্রতিস্থাপন করছি এবং np.where
এর মানের উপর ভিত্তি করে একটি শর্তাধীন সাবস্ট্রিং সেট করতে ব্যবহার করছি age
:
df.animal = df.animal + ", " + df.type + ", " + \
df.age.astype(str) + " year" + np.where(df.age > 1, 's', '')
In [3]: df
Out[3]:
animal type age
-------------------------------------
0 dog, hound, 5 years hound 5
1 cat, ragdoll, 1 year ragdoll 1
শর্তসাপেক্ষে একাধিক কলাম পরিবর্তন করা
একটি আরও .apply()
কমনীয় পদ্ধতির একটি একক কলামের চেয়ে পুরো ডেটাফ্রেমে কল করা:
def transform_row(r):
r.animal = 'wild ' + r.type
r.type = r.animal + ' creature'
r.age = "{} year{}".format(r.age, r.age > 1 and 's' or '')
return r
df.apply(transform_row, axis=1)
In[4]:
Out[4]:
animal type age
----------------------------------------
0 wild hound dog creature 5 years
1 wild ragdoll cat creature 1 year
উপরের কোডে transform_row(r)
ফাংশন Series
একটি প্রদত্ত সারির প্রতিনিধিত্ব করে এমন একটি বস্তু গ্রহণ করে ( axis=1
এটি দ্বারা নির্দেশিত , এর ডিফল্ট মান প্রতিটি কলামের জন্য axis=0
একটি Series
বস্তু সরবরাহ করবে )। এটি প্রক্রিয়াটিকে সহজতর করে যেহেতু আমরা কলামের নামগুলি ব্যবহার করে সারিতে প্রকৃত 'আদিম' মানগুলি অ্যাক্সেস করতে পারি এবং প্রদত্ত সারি / কলামে অন্যান্য কক্ষগুলির দৃশ্যমানতা অর্জন করতে পারি।
df.loc[df.ID == 103, ['FirstName', 'LastName']] = 'Matt', 'Jones'