2016-04-02 6 views
0

У меня есть данные:Как преобразовать значение pandas dataframe?

data = [ 
    (1, 'Shirt', 2), 
    (1, 'Pants', 3), 
    (2, 'Top', 2), 
    (2, 'Shirt', 1), 
    (2, 'T-Shirt', 4), 
    (3, 'Shirt', 3), 
    (3, 'T-Shirt', 2), 
    (4, 'Top', 3), 
    (4, 'Pants', 3), 
    (4, 'T-Shirt', 3), 
] 

и я преобразование с помощью pandas:

df = pd.DataFrame(data, columns=['unique_id', 'category_product', 'count']) 

и матрица из df является:

unique_id category_product count 
0   11   Shirt  2 
1   11   Pants  3 
2   24    Top  2 
3   24   Shirt  1 
4   24   T-Shirt  4 
5   36   Shirt  3 
6   36   T-Shirt  2 
7   48    Top  3 
8   48   Pants  3 
9   48   T-Shirt  3 

, но мне нужно изменить unique_id начало от 0, и увеличение наблюдаемого порядка и результат:

unique_id category_product count 
0   0   Shirt  2 
1   0   Pants  3 
2   1    Top  2 
3   1   Shirt  1 
4   1   T-Shirt  4 
5   2   Shirt  3 
6   2   T-Shirt  2 
7   3    Top  3 
8   3   Pants  3 
9   3   T-Shirt  3 

как я могу это сделать?

+0

sory my mistak, у меня есть обновленный вопрос @DSM – ihsansat

+0

Пример массива данных (хотя он не соответствует результату чуть ниже) выглядит как простой 'df ['unique_id'] - = 1' будет работать, но я предполагаю, что это не так просто ...? –

+0

sory @JoachimIsaksson, это просто -1 unique_id правильно? но моя цель - порядок изменений от 0 порядка увеличения :( – ihsansat

ответ

1

Могут быть более простые способы, но вот один;

df.unique_id = (df.unique_id.diff() != 0).cumsum() - 1 

В основном он просто сравнивает каждую строку с предыдущей, если разница есть! = 0 она увеличивает выходное значение на 1. -1 в конце концов, чтобы компенсировать ведущего NaN (где первый строка не имеет никакого значения для сравнения)

+0

thx @Joachim. ..it's work! thx – ihsansat

Смежные вопросы