मेरे पास एकाधिक कॉलम वाला डेटाफ्रेम है। स्तंभों में से एक में, तार संग्रहीत होते हैं। मैं उन स्ट्रिंग पर नए लोगों के साथ नाम बदलना चाहता हूं:

यहाँ एक उदाहरण है:

    old_names = ['Adam', 'Alan', 'Andrew', 'Frank', 'Harry', 'Jack', 
'Josh', 'Justin', 'Roger', 'Ryan', 'Amanda', 'Betsy', 'Courtney', 'Ellen',
 'Heather', 'Katie', 'Kristin', 'Melanie', 'Nancy', 'Stephanie']

    new_names = ['Hanna', 'Brayden', 'Brooklyn', 'Ashlynn', 'Joshua', 
'Britni', 'Latoya', 'Hunter', 'Kaylie', 'Infant', 'Ashlea', 'Haley',
 'Caleb', 'Gage', 'Raheem', 'Mariel', 'Hakeem', 'Lukas', 'Isis', 'Nia']

मैं old_names[0] को new_names[0] old_names[1] से new_names[1] वगैरह से बदलना चाहता हूं। ऐसा करने के लिए, मैंने निम्नलिखित किया:

def change_names(data,old,new):
    for i in range(len(prev)):
        data['Sentence'] = data['Sentence'].str.replace(old[i],new[i])
    return data

data = pd.read_csv("mydata.csv")
changed_data = change_names(data,old_names,new_names)

अगर मैं इस फ़ंक्शन को लागू करता हूं तो मैं Harry को Latoyaua से बदल देता हूं क्योंकि यह पहले हैरी को जोशुआ से बदल देता है और फिर जोश को लाटोया से बदल देता है, यह जोशुआ के उपसर्ग को Latoya से भी बदल देता है।

मैं इस समस्या को कैसे ठीक करुं ?

संपादित करें

यह डेटाफ़्रेम से एक नमूना पंक्ति है:

>>> t.loc[220]
Sentence                            Harry feels angry.
Template        <person subject> feels <emotion word>.
Person                                           Harry
Name: 220, dtype: object
0
zwlayer 8 पद 2018, 17:24

1 उत्तर

सबसे बढ़िया उत्तर

आप निम्न कार्य कर सकते हैं:

# create a dictionary of old to new name
map_names = dict(zip(old_names, new_names))

# sample data frame
df = pd.DataFrame({'sentence':['Harry feels angry','Adam is happy','Frank went crazy.']})

# map new names to old names
df['sentence'] = df['sentence'].apply(lambda x: ' '.join(map_names.get(y, y) for y in x.split()))

print(df)

    sentence
0   Joshua feels angry
1   Hanna is happy
2   Ashlynn went crazy.
1
YOLO 8 पद 2018, 19:14