का उपयोग करके सबस्ट्रिंग को हटा रहा है मैंने चारों ओर खोज करने की कोशिश की है और ऐसा करने का एक आसान तरीका नहीं पता है, इसलिए मुझे उम्मीद है कि आपकी विशेषज्ञता मदद कर सकती है।पायथन पांडस एक और कॉलम
मैं जो मुझे देता है दो कॉलम
import numpy as np
import pandas as pd
pd.options.display.width = 1000
testing = pd.DataFrame({'NAME':[
'FIRST', np.nan, 'NAME2', 'NAME3',
'NAME4', 'NAME5', 'NAME6'], 'FULL_NAME':['FIRST LAST', np.nan, 'FIRST LAST', 'FIRST NAME3', 'FIRST NAME4 LAST', 'ANOTHER NAME', 'LAST NAME']})
के साथ एक पांडा डेटा फ्रेम
FULL_NAME NAME
0 FIRST LAST FIRST
1 NaN NaN
2 FIRST LAST NAME2
3 FIRST NAME3 NAME3
4 FIRST NAME4 LAST NAME4
5 ANOTHER NAME NAME5
6 LAST NAME NAME6
मैं क्या करना चाहते हैं 'NAME' कॉलम के मानों से ले और फिर हटाने है 'पूर्ण नाम' कॉलम से यदि यह वहां है। तो समारोह
FULL_NAME NAME NEW
0 FIRST LAST FIRST LAST
1 NaN NaN NaN
2 FIRST LAST NAME2 FIRST LAST
3 FIRST NAME3 NAME3 FIRST
4 FIRST NAME4 LAST NAME4 FIRST LAST
5 ANOTHER NAME NAME5 ANOTHER NAME
6 LAST NAME NAME6 LAST NAME
अब तक, मैंने नीचे एक फ़ंक्शन परिभाषित किया है और लागू विधि का उपयोग कर रहा हूं। हालांकि यह मेरे बड़े डेटा सेट पर धीमा चलता है और मुझे उम्मीद है कि ऐसा करने का एक और अधिक प्रभावी तरीका है। धन्यवाद!
def address_remove(x):
try:
newADDR1 = re.sub(x['NAME'], '', x[-1])
newADDR1 = newADDR1.rstrip()
newADDR1 = newADDR1.lstrip()
return newADDR1
except:
return x[-1]
बढ़िया!मैं दूसरे समाधान के साथ आने की कोशिश कर रहा था, लेकिन तीसरा भी बेहतर है! क्या आप मुझे बताएंगे कि "ज़िप" कमांड क्या कर रहा है? – Link
खुशी है कि काम किया! 'ज़िप' एकाधिक पुनरावृत्तियों को लेता है और मूल पुनरावृत्तियों से कुल का एक पुनरावर्तक देता है। अधिक शब्दों में यह आपको एक साथ दो या दो से अधिक पुनरावृत्तियों के माध्यम से लूप करने की अनुमति देता है। https://docs.python.org/3/library/functions.html#zip – johnchase