Mohamed Elnemr نشر 23 أغسطس 2021 أرسل تقرير نشر 23 أغسطس 2021 (معدل) أحاول دمج أعمدة dataframes بحيث تكون عمود جديد شكلة مختلفة عن الأعمدة الموجودة لكنه يتكون في الأساس منهم رغم إختلاف الرموز tokens. كمثال لدي تلك البيانات على شكل dataframe: dataframe = pd.DataFrame({'col_1' : ['a','b','c','d'], 'col_2' : ['name_a','name_b','name_c','name_d'], 'col_3' : ['age_a','age_b','age_c','age_d']}) وأود أن يتم دمجها بحيث تخرج بالشكل التالي: features 0 a <0> name_a <1> age_a 1 b <0> name_b <1> age_b 2 c <0> name_c <1> age_c 3 d <0> name_d <1> age_d مع مراعاة عدم التغيير في البيانات الأصلية. كيف أقوم بفعل هذا؟ تم التعديل في 23 أغسطس 2021 بواسطة Mohamed Elnemr 2 اقتباس
0 Ahmed Sharshar نشر 23 أغسطس 2021 أرسل تقرير نشر 23 أغسطس 2021 يمكنك إستخدام المكتبة itertools بحيث تقوم بعمل عمود جديد عبارة عن مزيج من الأعمدة الأخرى بالشكل الذي تريده. الكود التالي يوضح كيف يمكن أن تقوم بها: from itertools import chain dataframe['features'] = dataframe.apply(lambda x: ''.join([*chain.from_iterable((v, f' <{i}> ') for i, v in enumerate(x))][:-1]), axis=1) print(dataframe) ويكون شكل الخرج هو: col_1 col_2 col_3 features 0 a name_a age_a a <0> name_a <1> age_a 1 b name_b age_b b <0> name_b <1> age_b 2 c name_c age_c c <0> name_c <1> age_c 3 d name_d age_d d <0> name_d <1> age_d حيث قمنا بإنشاء العمود features والذي يحتوى شكل البيانات التي تريد. اقتباس
0 محمد أبو عواد نشر 23 أغسطس 2021 أرسل تقرير نشر 23 أغسطس 2021 يمكنك فعل ذلك من خلال استخدام itertools كالتالي from itertools import chain dataframe['features'] = dataframe.apply(lambda x: ''.join([*chain.from_iterable((v, f' <{i}> ') for i, v in enumerate(x))][:-1]), axis=1) print(dataframe) سوف يكون الناتج كالتالي col_1 col_2 col_3 features 0 a name_a job_a a <0> name_a <1> job_a 1 b name_b job_b b <0> name_b <1> job_b 2 c name_c job_c c <0> name_c <1> job_c 3 d name_d job_d d <0> name_d <1> job_d 1 اقتباس
0 Ali Haidar Ahmad نشر 23 أغسطس 2021 أرسل تقرير نشر 23 أغسطس 2021 يمكنك أيضاً استخدام الدالة df.agg: dataframe = pd.DataFrame({'col_1' : ['a','b','c','d'], 'col_2' : ['name_a','name_b','name_c','name_d'], 'col_3' : ['age_a','age_b','age_c','age_d']}) dataframe['features'] = dataframe.agg( lambda s: r' <{}> '.join(s).format(*range(s.size)), axis=1) """ col_1 col_2 col_3 features 0 a name_a age_a a <0> name_a <1> age_a 1 b name_b age_b b <0> name_b <1> age_b 2 c name_c age_c c <0> name_c <1> age_c 3 d name_d age_d d <0> name_d <1> age_d """ أو بشكل يدوي معقد قليلاً: dataframe = pd.DataFrame({'col_1' : ['a','b','c','d'], 'col_2' : ['name_a','name_b','name_c','name_d'], 'col_3' : ['age_a','age_b','age_c','age_d']}) dataframe['features'] = [" ".join(F"{entry}<{num}>" if ent[-1] != entry else entry for num, entry in enumerate(ent) ) for ent in dataframe.to_numpy()] 1 اقتباس
السؤال
Mohamed Elnemr
أحاول دمج أعمدة dataframes بحيث تكون عمود جديد شكلة مختلفة عن الأعمدة الموجودة لكنه يتكون في الأساس منهم رغم إختلاف الرموز tokens.
كمثال لدي تلك البيانات على شكل dataframe:
وأود أن يتم دمجها بحيث تخرج بالشكل التالي:
مع مراعاة عدم التغيير في البيانات الأصلية. كيف أقوم بفعل هذا؟
تم التعديل في بواسطة Mohamed Elnemr3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.