4
votes

Remplacement des valeurs qui correspondent à certaines chaînes dans dataframe

J'essaie de remplacer certaines données dans le bloc de données pour inclure le «F» supplémentaire.

Le code devrait ressembler à ceci:

testdata['pfType'][testdata['pfType'] == 'NK225M'] = 'NK225MF'
testdata['pfType'][testdata['pfType'] == 'TOPIXM'] = 'TOPIXMF'

J'ai essayé de faire ceci:

if testdata['pfType'] =='NK225M'|testdata['pfType'] == 'TOPIXM':
    testdata['pfType'] = ' testdata['pfType'] & 'F';

Mais ce n'est pas en changeant les valeurs, quelle est la meilleure façon d'ajouter le «F» aux chaînes s'il s'agit de NK225M ou TOPIXM.


0 commentaires

4 Réponses :


0
votes

Pour modifier le dataframe, utilisez le code ci-dessous.

  testdata.at['pfType', testdata['pfType'] == 'NK225M'] = 'NK225MF'

( ref .)


0 commentaires

1
votes

Utilisez np.where

testdata['pfType'] = np.where(testdata['pfType']=='NK225M', 'NK225MF', testdata['pfType'])
testdata['pfType'] = np.where(testdata['pfType']=='TOPIXM', 'TOPIXMF', testdata['pfType'])


0 commentaires

5
votes

Utilisez isin pour les valeurs de test de la liste et si la condition de correspondance ajoute F:

testdata['pfType'] = np.where(testdata['pfType'].isin(vals), 
                              testdata['pfType'] + 'F', 
                              testdata['pfType'])

Une autre solution avec Series.mask ou numpy.where :

testdata['pfType'] = testdata['pfType'].mask(testdata['pfType'].isin(vals),
                                             testdata['pfType'] + 'F')


0 commentaires

2
votes

Utilisez numpy.where

    pfType
0  NK225MF
1  TOPIXMF
2    Hello
3    World

Sortie:

import pandas as pd
import numpy as np

testdata = pd.DataFrame({"pfType": ['NK225M', 'TOPIXM', "Hello", "World"]})
testdata['pfType'] = np.where((testdata['pfType'] == "TOPIXM") | (testdata['pfType'] == 'NK225M'), testdata['pfType']+"F", testdata['pfType'])
print(testdata)


0 commentaires