Как отобразить строки в серии Pandas - PullRequest
0 голосов
/ 25 марта 2020

Есть ли способ для map characters для column в Pandas.

Например, я хотел бы сопоставить столбец, скажем info, как это {"1" : "US", "2": "DE", "3": "CA", "4": "AU", "5": "BE"}

Поэтому вместо цифр я хотел бы что-то US, а остальные показать

РЕДАКТИРОВАТЬ ПРИМЕЧАНИЕ: Я не хочу взрывать столбец, я хочу оставить их как есть, только заменяя числа на строки

0   ['3']
1   ['6']
2   ['3','4']
3   ['3','4','6']
4   ['3','4']
5   ['6']
6   ['6']
7   ['5']
8   ['5']
9   ['3', '4', '1']

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Похоже, вы могли бы сделать:

d = {"1": "US", "2":"DE", "3":"CA", "4":"AU", "5":"BE"}
df.dropna().explode('my_col').my_col.map(d).groupby(level=0).agg(list).reindex(df.index)
1 голос
/ 25 марта 2020

Если вы не хотите взрываться, используйте «Применить». Но помните, что метод разнесения может быть намного быстрее, чем этот, на больших фреймах данных

Тестовый фрейм данных

>>> df
        test
0     [3, 4]
1        [6]
2        [3]
3  [3, 4, 6]

Словарь сопоставления

>>> info =  {"1": "US", "2":"DE", "3":"CA", "4":"AU", "5":"BE"}

КОД

>>> df.test.apply(lambda x: [info.get(str(i)) for i in x])
0          [CA, AU]
1            [None]
2              [CA]
3    [CA, AU, None]
Name: test, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...