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.
4 Réponses :
Pour modifier le dataframe, utilisez le code ci-dessous.
testdata.at['pfType', testdata['pfType'] == 'NK225M'] = 'NK225MF'
( ref .)
Utilisez np.where
testdata['pfType'] = np.where(testdata['pfType']=='NK225M', 'NK225MF', testdata['pfType']) testdata['pfType'] = np.where(testdata['pfType']=='TOPIXM', 'TOPIXMF', testdata['pfType'])
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')
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)