использование dict для замены значений в столбце pandas

#python #python-3.x #pandas

Вопрос:

У меня есть фрейм данных панд

 0  column_1  column_2
1        Gm       tri
2       Boi        bi
3        Xv       tri
4        Gm        bi
5        Zl       uni
6        Oe       uni
 

Я хочу использовать приведенный ниже диктант для изменения значений в col2

 dict_a = {'Gm':'tri', 'Boi':'bi', 'Xv':'uni', 'Zl':'uni', 'Oe':'bi'}
 

чтобы выглядеть так:

 0  col1   col2
1   Gm     tri
2  Boi      bi
3   Xv     uni
4   Gm     tri
5   Zl     uni
6   Oe      bi
 

Комментарии:

1. Ты пробовал pandas.DataFrame.apply ?

Ответ №1:

Попробуйте с map :

 import pandas as pd

df = pd.DataFrame({
    'column_1': ['Gm', 'Boi', 'Xv', 'Gm', 'Zl', 'Oe'],
    'column_2': ['tri', 'bi', 'tri', 'bi', 'uni', 'uni']
})

dict_a = {'Gm': 'tri', 'Boi': 'bi', 'Xv': 'uni', 'Zl': 'uni', 'Oe': 'bi'}

df['column_2'] = df['column_1'].map(dict_a)
print(df)
 

df :

   column_1 column_2
0       Gm      tri
1      Boi       bi
2       Xv      uni
3       Gm      tri
4       Zl      uni
5       Oe       bi
 

Ответ №2:

Вы могли бы попробовать это (однако, скорее всего, предпочтительнее будет сопоставление):

 import pandas as pd #using version 1.1.3

# build the df as described
occurrences=['Gm','Boi','Xv','Gm','Zl','Oe'] 
df = pd.DataFrame(occurrences,columns=['col1'])
df['col2'] = pd.Series(['tri','bi','tri','bi','uni','uni'] )

#set dict
dict_a = {'Gm':'tri', 'Boi':'bi', 'Xv':'uni', 'Zl':'uni', 'Oe':'bi'}

#replace col2 values
df['col2']=df.replace({'col1': dict_a})

#review results
df.head()
 
  • диктуйте:
       - For a DataFrame nested dictionaries, e.g.,
        ``{'a': {'b': np.nan}}``, are read as follows: look in column
        'a' for the value 'b' and replace it with NaN. The `value`
        parameter should be ``None`` to use a nested dict in this
        way. You can nest regular expressions as well. Note that
        column names (the top-level dictionary keys in a nested
        dictionary) **cannot** be regular expressions.
     

Комментарии:

1. Вы пробовали это сделать? Это работает совершенно нормально. Кроме того, если вы прочтете документы, связанные с заменой, вы увидите информацию о словарях и замене.:

2. Не знаю, что не так, возможно, у вас проблемы с синтаксисом (отсутствующие скобки или скобки) или другая версия pandas. Более чем один способ освежевать кошку.

3. Это тоже хорошо работает для меня; 1 для обоих ответов, но имхо, это более читабельно из-за «заменить». Но, возможно, последний пункт из цитаты документации (который используется в ответе) может быть освещен..