اذهب إلى المحتوى

السؤال

نشر

لدي بيانات ذات حجم 20x4000 على شكل Dataframe. اثنان من الأعمدة في تلك ال dataframe هما year و month وأريد عمل متغير جديد يدعي period يقوم بدمج العمود year بجانب العمود month كالتالي:

year  month  period
2021  june   2021june

كيف يمكنني عمل هذا؟

Recommended Posts

  • 0
نشر

لو أن كلا العمودين من النوع string يمكنك دمجهما مباشرة بالكود التالي:

df["period"] = df["Year"] + df["month"]

اما اذا كان احد الأعمدة أو كلاهما ليس من صيغة string يجب تحويله اولا ثم دمجهمها:

df["period"] = df["Year"].astype(str) + df["month"]

أو يمكنك استخدام الكود التالي ايضا كطريقة أخرى:

df = pd.DataFrame({'Year': ['2020', '2021'], 'month': ['june', 'july']})
df['period'] = df[['Year', 'month']].apply(lambda x: ''.join(x), axis=1)

ويكون الخرج على الشكل التالي:

   Year  month  period
0  2020  june   2021june
1  2021  july   2021july

اما اذا أردت دمج العديد من الأعمدة سويا يمكنك استخدام الدالة agg لعمل هذا كالتالي:

df['period'] = df[['Year', 'month', ...]].agg('-'.join, axis=1)

 

  • 0
نشر

يمكنك القيام بذلك من خلال الدالة assign كالتالي:

import pandas as pd
df = pd.DataFrame({'Year': ['2020', '2021'], 'month': ['june', 'july']})
df
"""
    Year 	month
0 	2020 	june
1 	2021 	july
"""
df = df.assign(period = df.Year.astype(str) + '-' + \
      df.month.astype(str))
df
"""
    Year 	month 	period
0 	2020 	june 	2020-june
1 	2021 	july 	2021-july
"""

أو باستخدام الدالة apply وتطبيق lambda على كل سطر من البيانات:

import pandas as pd
df = pd.DataFrame({'Year': ['2020', '2021'], 'month': ['june', 'july']})
df
"""
    Year 	month
0 	2020 	june
1 	2021 	july
"""
df['period'] = df[df.columns[0:]].apply(
    lambda x: '-'.join(x.dropna().astype(str)),
    axis=1
)
df
"""
    Year 	month 	period
0 	2020 	june 	2020-june
1 	2021 	july 	2021-july
"""

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...