Я нашел решение своей проблемы, но я уверен, что есть гораздо лучший способ.Я пытаюсь перебрать DataFrame, и если каждый индекс в итерации <2 от следующего индекса, то наименьший индекс - это ключ, а количество значений <2 от каждого последующего индекса - это значения, которыедобавлен новый дикт.Извините, если это не имеет особого смысла, но по сути, если DataFrame: </p>
v
1 .15
2 .31
3 .64
4 .15
7 .62
11 .12
15 .39
18 .54
19 .84
, тогда результирующий dict будет
{1:4, 18:2}
. Для этого я использовалследующий код:
f_dict = defaultdict(int)
for id1, id2 in zip(df.iterrows(),df_test[1:].iterrows()):
if id2[0] - id1[0] < 2:
f_dict[x] += 1
else:
x = id1[0]
Однако при запуске этого, как и ожидалось, я получаю NameError: имя 'x' не определено.Таким образом, давая значение xa первого значения индекса DataFrame перед итерацией, это, кажется, решает проблему, но таким способом, который кажется неправильным.
f_dict = defaultdict(int)
x = df_test.index[0]
for id1, id2 in zip(df_test.iterrows(),df_test[1:].iterrows()):
if id2[0] - id1[0] < 2:
f_dict[x] += 1
else:
x = id1[0]
Этот код создает дикт-
{1:3, 18:1}
вместо
{1:4, 18:2}
Таким образом, я перебираю новый dict, чтобы добавить 1 к каждому значению:
for key in f_dict:
f_dict[key] += 1
И, наконец, у меня есть то, чтоЯ ищу.Я прошу прощения за неправильный способ решения этой проблемы, так как я все еще довольно плохо знаком с Python и программированием в целом.Есть ли лучший способ решить эту проблему, чтобы избежать необходимости устанавливать значение x до итерации?Так же как и не нужно потом зацикливаться на новом dict и увеличивать каждое значение на 1?Большое спасибо!