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

السؤال

نشر

لدي بيانات على الشكل التالي:

    time    result
1    01:00   +52A
2    02:00   +62B
3    03:00   +72C
4    04:00   -82D
5    05:00   -92E

وأريد أن أجعلها تظهر على الشكل التالي:

    time    result
1    01:00   52
2    02:00   62
3    03:00   72
4    04:00   82
5    05:00   92

حاولت استخدام الدالة 

.str.lstrip('+-')

لكن يظهر لي الخطأ التالي:

TypeError: wrapper() takes exactly 1 argument (2 given)

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

Recommended Posts

  • 0
نشر

يمكنك ببساطة استخدام السطر التالي لحذف علامات الموجي + والسالب - وكذلك الحروف الكبيرة أو الصغيرة التي تريد كالتالي:

data['result'] = data['result'].map(lambda x: x.lstrip('+-').rstrip('ABCDE'))

أو يمكنك استخدام الكود التالي أيضا:

df['result'] = df['result'].str.replace(r'\D', '')
df

    time result
1  01:00     52
2  02:00     62
3  03:00     72
4  04:00     82
5  05:00     92

 

  • 0
نشر

ليكن لدينا الفريم التالي:

import pandas as pd
#Map
df = pd.DataFrame({'time':['09:00','10:00','11:00','12:00','13:00'], 'result':['+52A','+62B','+44a','+30b','-110a']})
df
"""
time 	result
0 	09:00 	+52A
1 	10:00 	+62B
2 	11:00 	+44a
3 	12:00 	+30b
4 	13:00 	-110a
"""
  1. استخدام التعابير المنطقية والدالة re.sub و re.compile من مكتبة regex:
    import re
    df['result'] = [re.compile(r'\D').sub('', x) for x in df['result']]
    df
    """
    time 	result
    0 	09:00 	52
    1 	10:00 	62
    2 	11:00 	44
    3 	12:00 	30
    4 	13:00 	110
    """
    # يفضل كتابة التعبير المنتظم مسبقاُ لتجنب الحسابات المكررة 
    reg=re.compile(r'\D')
    df['result'] = [reg.sub('', x) for x in df['result']]

    كما ويمكنك استخدام الدالة re.search بدلاً من re.sub:

    reg = re.compile(r'\d+')
    df['result'] = [reg.search(x)[0] for x in df['result']]

     

  2. استخدام الدالة lstrip:
    df['result'] = [x.lstrip('+-').rstrip('aAbBcC') for x in df['result']]
    df
    """
    time 	result
    0 	09:00 	52
    1 	10:00 	62
    2 	11:00 	44
    3 	12:00 	30
    4 	13:00 	110
    """

     

  3. وإذا كنت تريد حلاً بايثونياً (أقصد بدون توابع مساعدة):
    df['result'] = [x[1:-1] for x in df['result']]

     

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...