Как изменить значение поля во фрейме данных, если вы знаете столбец и ссылку на строку - PullRequest
0 голосов
/ 08 января 2019

У меня есть большой фрейм данных с именем df, который выглядит следующим образом:

       First Name  Last name        Dept  Location Status       Concat 
    0          Jo      Jones    Accounts   Bristol Current     JonesJo
    1         Sid      Smith       Sales      Hull New        SmithSid
    2        Phil      Evans  Production      Hull Current   EvansPhil
    3       Sarah      Heath   Marketing   Bristol Current  HeathSarah
    4        Jane       Hill    Accounts   Bristol Current    HillJane
    5         Amy     Cooper       Sales      Hull Current   CooperAmy

23453      Marcus      Price  Operations      Hull Current PriceMarcus
23454      Andrew       King      Design   Bristol Current  KingAndrew
23455        Emma       Lane   Marketing   Bristol Current    LaneEmma
23456       Brian       Deen    Accounts   Bristol Current   DeenBrian       
23457       Steve      Jacks      Design   Bristol Current  JacksSteve

Есть ли способ изменить значение поля в записи, если вы знаете «координаты» поля для изменения.

Например, я пытаюсь изменить значение 'Dept' Эми Купер с 'Sales' на 'Accounts', могу ли я сделать что-то вроде:

value = 'Accounts'
ConcatName = 'CooperAmy'
columnName = 'Dept'

df.ix[df['Concat']= ConcatName ,columnName ] = value

пь. Все значения Concat будут уникальными

Итак, мой результирующий фрейм данных будет выглядеть так:

       First Name  Last name        Dept  Location Status       Concat 
    0          Jo      Jones    Accounts   Bristol Current     JonesJo
    1         Sid      Smith       Sales      Hull New        SmithSid
    2        Phil      Evans  Production      Hull Current   EvansPhil
    3       Sarah      Heath   Marketing   Bristol Current  HeathSarah
    4        Jane       Hill    Accounts   Bristol Current    HillJane
    5         Amy     Cooper    Accounts      Hull Current   CooperAmy

23453      Marcus      Price  Operations      Hull Current PriceMarcus
23454      Andrew       King      Design   Bristol Current  KingAndrew
23455        Emma       Lane   Marketing   Bristol Current    LaneEmma
23456       Brian       Deen    Accounts   Bristol Current   DeenBrian       
23457       Steve      Jacks      Design   Bristol Current  JacksSteve

1 Ответ

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

Предполагая, что комбинации 'First Name' и 'Last name' являются уникальными в вашем фрейме данных, вы можете использовать MultiIndex и затем установить скаляр с помощью pd.DataFrame.at:

df = df.set_index(['First Name', 'Last name'])
df.at[('Amy', 'Cooper'), 'Dept'] = 'Accounts'

После изменения индекса вы больше не можете получать доступ к своим сериям через df['First Name']. Для этого используйте df.index.get_level_values('First Name'). Если вам понадобится индекс как столбцы снова на следующем этапе, вы можете использовать df = df.reset_index().

pd.DataFrame.loc - более сложный инструмент индексирования, который предпочтителен, когда необходимо установить / заменить несколько значений.

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