Как передать тот же индекс на столбец для дублирующих пар на другой столбец? - PullRequest
2 голосов
/ 12 июня 2019

Я пытаюсь дать тот же индекс для значений дубликатов на моем Dataframe. Обратите внимание, что индекс должен быть в столбце

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

def double_finder(dataframe, where: str):
    new_index = 10000 #new index start 
    df = dataframe[where]
    new_list = df.values.tolist()

    d = pd.DataFrame({"data": new_list})
    f = d.groupby("data").groups # this creates a dict class with the values 
                                 # of the Dataframe and their position 
                                 # on the Dataframe

, поэтому new list имеет вид ['a-4', 'b-210', 'a-4', 'z-b', 'c-a', 'b-210'] , Результат f выглядит следующим образом "a-4": Int64Index: [0 , 2], "b-210": Int64Index: [1, 4], "z-b": Int64Index: [3] и т. Д.

Я хочу добиться чего-то подобного в моем последнем Dataframe: index_col, data 0, a-4 1, b-210 0, a-4 2, z-b 3, c-a 1, b-210

1 Ответ

1 голос
/ 12 июня 2019

Используйте factorize и присвойте index:

new_list = ['a-4', 'b-210', 'a-4', 'z-b', 'c-a', 'b-210']
d = pd.DataFrame({"data": new_list})
d.index = pd.factorize(d['data'])[0]
print (d)
    data
0    a-4
1  b-210
0    a-4
2    z-b
3    c-a
1  b-210

При необходимости новый столбец:

new_list = ['a-4', 'b-210', 'a-4', 'z-b', 'c-a', 'b-210']
d = pd.DataFrame({'new':pd.factorize(new_list)[0] ,"data": new_list})
print (d)
   new   data
0    0    a-4
1    1  b-210
2    0    a-4
3    2    z-b
4    3    c-a
5    1  b-210
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...