Pandas DataFrame.apply على نوع الكائن: إنشاء عمود جديد دون التأثير على الأعمدة المستخدمة

0

أرغب في إنشاء عمود B جديد عن طريق تطبيق دالة على كل صف من العمود A ، وهو كائن نوع البيانات ومليء ببيانات القائمة ، في dataframe DF دون تغيير قيم العمود A.

def f(i):
 if(type(i) is list):
    for j in range(0,len(i)):
        i[j]+=1
 else:
  i+=1        
 return i
df = pd.DataFrame([1,1],columns=['A'])
df['A']=df['A'].astype(object)
df.at[[0,1],'A']=[1,2]
df['B']=df['A'].apply(lambda x: f(x))

لسوء الحظ ، يحدث ما يلي: df ['B'] = function (df ['A']) ، ولكن أيضًا df ['A'] = function (df ['A']).

يرجى ملاحظة: df ['A'] قائمة ، dtype هو كائن (س) .

للتوضيح: أريد أن يبقى العمود "أ" أصليًا. يمكن لأي شخص أن يخبرني عن كيفية تحقيق ذلك؟

2 الاجابة

1
افضل جواب

تريد استخدام تطبيق على العمود A

df['B'] = df['A'].apply(function)

هذا يفعل الوظيفة على كل قيمة في A .

أساسا أنت تستخدم طريقة تطبيق كائن السلسلة ، مزيد من المعلومات:

pandas.Series.apply

:مؤلف
0
df2 = df.copy()
df['B'] = df2.apply(lamba row: function(row['A']), axis=1)
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام