получить ключи от значений существует в dataframe - PullRequest
0 голосов
/ 12 марта 2020

У меня есть пары ключ-значение. Я хочу найти ключ значений, существующий в кадре данных, и назначить его в качестве нового столбца.

Например, у меня есть словарь

 "low" : [1,4] "high" : [2,5] "medium":[3]

c1 
1  
2  
3  
4  
5   

и ожидаемый вывод, подобный этому

c1 c2
1  low
2  high
3  medium
4  low
5  high 

1 Ответ

0 голосов
/ 12 марта 2020

Используйте Series.map, но сначала сгенерируйте словарь в понимании dict с помощью split, также преобразуйте столбец c1 в string, если он заполнен целыми числами:

d = {"low" : '1,4', "high" : '2,5', "medium":'3'}

d1 = {x:k for k, v in d.items() for x in v.split(',')}
print (d1)
{'1': 'low', '4': 'low', '2': 'high', '5': 'high', '3': 'medium'}

df['c2'] = df['c1'].astype(str).map(d1)
print (df)
   c1      c2
0   1     low
1   2    high
2   3  medium
3   4     low
4   5    high

Решение, если списки в dictionary:

d = {"low" : [1,4], "high" : [2,5], "medium":[3]}

d1 = {x:k for k, v in d.items() for x in v}
print (d1)
{1: 'low', 4: 'low', 2: 'high', 5: 'high', 3: 'medium'}

df['c2'] = df['c1'].map(d1)
print (df)
   c1      c2
0   1     low
1   2    high
2   3  medium
3   4     low
4   5    high
...