Мой кадр данных pandas находится в столбце и выглядит следующим образом (заголовок столбца удален, это «тест»):
1, 1, 1, 2, 2, 2, 3, 3, 3, ... 119, 119, 119, 120, 120, 120, 1, 1, 1, 2, 2, 2, 3, 3, 3, ... 119, 119, 119, 120, 120, 120и т. д.
Список обновляется до 350000 строк.Что я хочу сделать, так это после того, как элемент в списке достигнет 120, а затем сбрасывается до 1, я хотел бы продолжить список следующим образом:
1, 1, 1, 2, 2, 2, 3, 3, 3, ... 119, 119, 119, 120, 120, 120, 121, 121, 121, 122, 122, 122, 123, 123, 123, ... 239, 239, 239, 240, 240, 240 и т. Д.
У меня возникли проблемы с реализацией того, что я хочу сделать.Код (который не работает, но я думаю, что логика близка) ниже:
enter code here
count = 0
for i in c2['test']:
if i[i-1] == 120 and i == 1: #value previously in column and current value in column
count += 1 # set multipler to 1 to start, and then as values loop, the counter will get larger
it = i + (120 * count) # create new value
c2.set_value(i,'test',it) # set new value; in first instance, this it variable should be 121
if count >= 1:
iti = i + (120 * count) # create new value
c2.set_value(i,'test',iti)# set new value; in second instance, this iti variable should be 122
Спасибо за вашу помощь!
Обновление:
Когда я применяю код @RafaelC к своему набору данных: https://www.dropbox.com/s/h17ssdu7lgwydd9/compiled_training_data.csv?dl=0 код, предоставленный по некоторым причинам, не работает.
dataset_parent_folder = "compiled_training_data.csv"
compiled_data = pd.read_csv(dataset_parent_folder, header=0)
pd.DataFrame(compiled_data).reset_index()
compiled_data.columns = ['test']
MAX = (120*3)+1 #I multiplied by 3 as 3 datasets are merged, and added 1 to get to a target of 360
D = 1 - (MAX-1)
n = compiled_data.test.diff().eq(D).cumsum()*(MAX-1) + compiled_data.test
1180838 rows × 1 columns
Выход после применения переиндексации:
test
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 1
16 1
17 1
18 1
19 1
20 1
21 1
22 1
23 1
24 1
25 1
26 1
27 1
28 1
29 1
... ...
1180808 120
1180809 120
1180810 120
1180811 120
1180812 120
1180813 120
1180814 120
1180815 120
1180816 120
1180817 120
1180818 120
1180819 120
1180820 120
1180821 120
1180822 120
1180823 120
1180824 120
1180825 120
1180826 120
1180827 120
1180828 120
1180829 120
1180830 120
1180831 120
1180832 120
1180833 120
1180834 120
1180835 120
1180836 120
1180837 120
1180838 rows × 1 columns
Выход после применения ответа от @ RafaelC
test
0 1
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 1
16 1
17 1
18 1
19 1
20 1
21 1
22 1
23 1
24 1
25 1
26 1
27 1
28 1
29 1
... ...
1180808 120
1180809 120
1180810 120
1180811 120
1180812 120
1180813 120
1180814 120
1180815 120
1180816 120
1180817 120
1180818 120
1180819 120
1180820 120
1180821 120
1180822 120
1180823 120
1180824 120
1180825 120
1180826 120
1180827 120
1180828 120
1180829 120
1180830 120
1180831 120
1180832 120
1180833 120
1180834 120
1180835 120
1180836 120
1180837 120
1180838 rows × 1 columns
Не уверен, если естьнекоторые проблемы с типом в столбце, я применил преобразование столбца в int64, но все еще не решил проблему.
Спасибо за помощь!