Mohamed Elnemr نشر 9 سبتمبر 2021 أرسل تقرير نشر 9 سبتمبر 2021 لدي بيانات على الشكل التالي: 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) كيف يمكنني عمل هذا؟ 2 اقتباس
0 Ahmed Sharshar نشر 9 سبتمبر 2021 أرسل تقرير نشر 9 سبتمبر 2021 يمكنك ببساطة استخدام السطر التالي لحذف علامات الموجي + والسالب - وكذلك الحروف الكبيرة أو الصغيرة التي تريد كالتالي: 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 Ali Haidar Ahmad نشر 9 سبتمبر 2021 أرسل تقرير نشر 9 سبتمبر 2021 ليكن لدينا الفريم التالي: 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 """ استخدام التعابير المنطقية والدالة 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']] استخدام الدالة 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 """ وإذا كنت تريد حلاً بايثونياً (أقصد بدون توابع مساعدة): df['result'] = [x[1:-1] for x in df['result']] اقتباس
السؤال
Mohamed Elnemr
لدي بيانات على الشكل التالي:
وأريد أن أجعلها تظهر على الشكل التالي:
time result 1 01:00 52 2 02:00 62 3 03:00 72 4 04:00 82 5 05:00 92
حاولت استخدام الدالة
.str.lstrip('+-')
لكن يظهر لي الخطأ التالي:
كيف يمكنني عمل هذا؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.