নীচের ডাটাফ্রেমের সাথে একাধিক কলাম ব্যবহার করার সময়, পান্ডা প্রয়োগের সাথে আমার কিছু সমস্যা রয়েছে
df = DataFrame ({'a' : np.random.randn(6),
'b' : ['foo', 'bar'] * 3,
'c' : np.random.randn(6)})
এবং নিম্নলিখিত ফাংশন
def my_test(a, b):
return a % b
যখন আমি এই ফাংশনটি প্রয়োগ করার চেষ্টা করি:
df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1)
আমি ত্রুটি বার্তা পেয়েছি:
NameError: ("global name 'a' is not defined", u'occurred at index 0')
আমি এই বার্তাটি বুঝতে পারি না, আমি নামটি সঠিকভাবে সংজ্ঞা দিয়েছি।
আমি এই ইস্যুতে যে কোনও সহায়তার খুব প্রশংসা করব
হালনাগাদ
আপনার সাহায্যের জন্য ধন্যবাদ. কোডটি দিয়ে আমি প্রকৃতপক্ষে কিছু বাক্য গঠন ভুল করেছি, সূচিটি রাখা উচিত '। তবে আমি এখনও আরও জটিল ফাংশন ব্যবহার করে একই সমস্যাটি পেয়েছি যেমন:
def my_test(a):
cum_diff = 0
for ix in df.index():
cum_diff = cum_diff + (a - df['a'][ix])
return cum_diff
my_test(a)
জানে না df
যেহেতু এটি আর্গুমেন্ট হিসাবে পাস করা হয়নি (যদি না df
বিশ্বব্যাপী বলে মনে করা হয় যা ভয়ানক অনুশীলন হবে)। আর্গুমেন্ট হিসাবে একটি ফাংশনের ভিতরে আপনার প্রয়োজনীয় সমস্ত মানগুলি পাস করতে হবে (অগ্রাধিকার ক্রমে), অন্যথায় ফাংশনটি df
কোথা থেকে আসে তা অন্য কীভাবে জানতে পারে ? এছাড়াও, গ্লোবাল ভেরিয়েবলের সাথে জড়িত একটি নেমস্পেসে প্রোগ্রাম করা খারাপ অভ্যাস, আপনি এর মতো ত্রুটিগুলি ধরবেন না।
apply
যতটা সম্ভব ব্যবহার করা থেকে বিরত থাকুন। আপনার যদি এটির নিশ্চিত হওয়া না হয় তবে আপনি সম্ভবত এটি ব্যবহার করবেন না। আমি কখন একবার আমার কোডে পান্ডা প্রয়োগ () ব্যবহার করতে চাই তা একবার দেখার পরামর্শ দিই? ।