يُعد دمج أعمدة النصوص بكفاءة مهمة بالغة الأهمية في معالجة البيانات. تُقدم هذه المقالة خمس طرق فعّالة من Pandas لربط أعمدة السلاسل النصية ضمن DataFrame، مع تسليط الضوء على نقاط القوة والضعف الخاصة بها لإرشادك في اختيار النهج الأمثل لاحتياجاتك المحددة.
جدول المحتويات:
طريقة عامل التشغيل +
يستخدم هذا النهج المباشر عامل التشغيل +
المدمج في Python لربط السلاسل النصية. وهو بشكل عام الأسرع في السيناريوهات البسيطة، ولكنه يتطلب التعامل بعناية مع القيم المفقودة (NaN) لتجنب استثناءات TypeError
.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
df['combined'] = df['col1'].fillna('') + df['col2'].fillna('')
print(df)
الإخراج:
col1 col2 combined
0 A D AD
1 B E BE
2 C F CF
3 NaN G G
طريقة Series.str.cat()
تم تصميم Series.str.cat()
خصيصًا لربط السلاسل النصية، وهي تتعامل بكفاءة مع البيانات المفقودة. وهي تسمح بالتخصيص باستخدام الفواصل و تمثيل NaN.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
df['combined'] = df['col1'].str.cat(df['col2'], sep='-', na_rep='')
print(df)
الإخراج:
col1 col2 combined
0 A D A-D
1 B E B-E
2 C F C-F
3 NaN G -G
طريقة df.apply()
تُوفر df.apply()
مرونة للعمليات على مستوى الصف (axis=1
) أو العمود (axis=0
)، مما يُمكّن منطق الربط المعقد. ومع ذلك، فقد تكون أقل كفاءة من عامل التشغيل +
بالنسبة لـ DataFrames كبيرة.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
df['combined'] = df.apply(lambda row: str(row['col1']) + ' ' + str(row['col2']), axis=1)
print(df)
الإخراج:
col1 col2 combined
0 A D A D
1 B E B E
2 C F C F
3 NaN G nan G
طريقة Series.map()
توفر Series.map()
طريقة مرنة لتطبيق الدوال المخصصة للربط، معالجة سيناريوهات متنوعة مثل المنطق الشرطي أو الفواصل المحددة. وهي مفيدة بشكل خاص لقواعد الربط الأكثر تعقيدًا.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
def combine_strings(x):
return str(x[0]) + '_' + str(x[1])
df['combined'] = df[['col1', 'col2']].apply(combine_strings, axis=1)
print(df)
الإخراج:
col1 col2 combined
0 A D A_D
1 B E B_E
2 C F C_F
3 NaN G nan_G
طريقة df.agg()
على الرغم من أنها تُستخدم في المقام الأول للتجميعات، إلا أن df.agg()
يمكن تكييفها لربط السلاسل النصية. ومع ذلك، فهي بشكل عام أقل كفاءة من الطرق الأخرى لهذا الغرض المحدد.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
df['combined'] = df.agg(lambda x: str(x['col1']) + ' ' + str(x['col2']), axis=1)
print(df)
الإخراج (مشابه لـ df.apply()
):
col1 col2 combined
0 A D A D
1 B E B E
2 C F C F
3 NaN G nan G
الخلاصة: تعتمد الطريقة الأمثل على احتياجاتك المحددة وحجم مجموعة البيانات. بالنسبة للربط الأساسي، يوفر عامل التشغيل +
السرعة. تتميز Series.str.cat()
بالكفاءة في التعامل مع القيم المفقودة. توفر Series.map()
و df.apply()
مرونة أكبر للسيناريوهات المعقدة، بينما df.agg()
أقل كفاءة لهذه المهمة.