apply()

ডাটাফ্রেমের বা সিরিজের প্রতিটি আইটেম ধরে কোনো কাজ করার দরকার হলে apply() মেথড নিয়ে কাজ করতে হয়।

বোঝার জন্য নিচের উদাহরণটি দেখি

import pandas as pd

# Create a sample DataFrame
data = {
    'Name': ['John', 'Alice', 'Bob', 'Jane'],
    'Exam1': [80, 90, 75, 85],
    'Exam2': [70, 85, 80, 95],
    'Exam3': [90, 80, 85, 70]
}

df = pd.DataFrame(data)

ডাটাফ্রেমটি দেখতে নিচের মত

আমি চাচ্ছি ডাটাফ্রেমের প্রতিটা এলিমেন্ট কে ২ দ্বারা গুন করতে

# Apply a function to every element in the DataFrame
df_applied = df.apply(lambda x:x*2)

df_applied ডাটাফ্রেমটি এখন নিচের মত ডেটা বহন করে

প্রত্যেকটি রো অনুযায়ী কাজ করা

import pandas as pd

# Create a sample DataFrame
data = {
    'Name': ['John', 'Alice', 'Bob', 'Jane'],
    'Bangla': [80, 90, 75, 85],
    'English': [70, 85, 80, 95],
    'Math': [90, 80, 85, 70]
}

df = pd.DataFrame(data)

ডাটাফ্রেমটি দেখতে নিচের মত

আমি চাচ্ছি একটা নতুন কলাম তৈরী করতে total নামে। প্রত্যেকটা রো এর তিনটি কলাম ('bangla','english','math' ) এর যোগফল total নামে কলামে বসবে

df['Total'] = df.apply(lambda row : row[['Bangla','English','Math']].sum(),axis=1)

ডাটাফ্রেমটি এখন নিচের মত ডেটা বহন করে

এখানে একটি প্যারামিটার নিয়েছি axis = ১ এর মানে প্রত্যেকটি রো ধরে ধরে কাজ করবে। যদি ০ দিতাম তাহলে কলাম ধরে কাজ করতো।

apply() axis প্রাকটিক্যাল

যদি সব গুলো ডেটা নাম্বার হয়

import pandas as pd

# Create a sample DataFrame with string columns
data = {
    'A': ['1', '2', '3'],
    'B': ['4', '5', '6'],
    'C': ['7', '8', '9']
}

df = pd.DataFrame(data)

# Convert string columns to numeric data types
df = df.astype(int)

# Sum row-wise using apply() and axis=1
df_row_sum = df.apply(lambda row: row.sum(), axis=1)
print("Row-wise sum:\n", df_row_sum)

# Sum column-wise using apply() and axis=0
df_column_sum = df.apply(lambda column: column.sum(), axis=0)
print("\nColumn-wise sum:\n", df_column_sum)

Output:

যদি সব গুলো ডেটা নাম্বার না হয়

import pandas as pd

# Create a sample DataFrame
data = {
    'Name': ['John', 'Alice', 'Bob', 'Jane'],
    'Bangla': [80, 90, 75, 85],
    'English': [70, 85, 80, 95],
    'Math': [90, 80, 85, 70]
}

df = pd.DataFrame(data)
# Row Wise
total_row = df.apply(lambda row:row[['Bangla','English','Math']].sum(),axis=1)
total_row
# Column Wise
total_column = df.apply(lambda column:column[[1,2,3]].sum(),axis=0)
total_column

Output:

Last updated