Как в DataFrame обратиться к чётным значениям index?

Рейтинг: 0Ответов: 1Опубликовано: 14.03.2023

Нужно изменить значения в столбце gauss_1 для тех строк, где четный индекс. Возможно ли использовать DataFrame.apply() или что-то другое лучше? Пытаюсь что-то подобное соорудить:

df[['index', 'gauss_1']].apply(lambda x: pd.Series([x.index, None],axis=1), index=['index', 'gauss_1']) if (x.index % 2) == 0 else pd.Series([x.index, x.gauss_1], axis=1)

DataFrame c заданными мной индексами

Ответы

▲ 2Принят

Можно через loc и булев массив:

df = pd.DataFrame(np.random.randint(0, 10, 10), columns=['gauss_1'])
df.loc[df.index % 2 == 0, 'gauss_1'] = None
print(df)

Или с помощью метода mask:

df.gauss_1 = df.gauss_1.mask(df.index % 2 == 0)
print(df)
   gauss_1
0      NaN
1      7.0
2      NaN
3      4.0
4      NaN
5      8.0
6      NaN
7      5.0
8      NaN
9      2.0