Замена значений, соответствующих определенной строке в кадре данных - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь заменить определенные данные во фрейме данных, чтобы включить дополнительный 'F'.

Код должен выглядеть следующим образом:

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

Я пытался сделать это:

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

Но это не изменение значений, что является лучшим способомдобавить 'F' к строкам, если это NK225M или TOPIXM.

Ответы [ 4 ]

0 голосов
/ 28 января 2019

Использование numpy.where

Пример:

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)

Выход:

    pfType
0  NK225MF
1  TOPIXMF
2    Hello
3    World
0 голосов
/ 28 января 2019

Использование np.where

testdata['pfType'] = np.where(testdata['pfType']=='NK225M', 'NK225MF', testdata['pfType'])
testdata['pfType'] = np.where(testdata['pfType']=='TOPIXM', 'TOPIXMF', testdata['pfType'])
0 голосов
/ 28 января 2019

Используйте isin для тестовых значений списка и, если соответствует условие, добавьте F:

testdata = pd.DataFrame({'pfType':['NK225M','TOPIXM','AAA']})

vals = ['NK225M','TOPIXM']
testdata.loc[testdata['pfType'].isin(vals), 'pfType'] += 'F'
print (testdata)
    pfType
0  NK225MF
1  TOPIXMF
2      AAA

Другие решения с Series.mask или numpy.where:

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

testdata['pfType'] = np.where(testdata['pfType'].isin(vals), 
                              testdata['pfType'] + 'F', 
                              testdata['pfType'])
0 голосов
/ 28 января 2019

Для изменения фрейма данных используйте следующий код.

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

( ref .)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...