Pandas - Заменить значения на основе индекса
Извините, если это было задано раньше, я не могу найти ответ.
Если я создам тактику данных:
import pandas as pd, numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('AB'))
Как я могу изменить запись в столбце А, например, число 16 из строки 0 -15? Другими словами, как заменить ячейки, основанные исключительно на индексе?
Ответы
Ответ 1
Используйте loc
:
df.loc[0:15,'A'] = 16
print (df)
A B
0 16 45
1 16 5
2 16 97
3 16 58
4 16 26
5 16 87
6 16 51
7 16 17
8 16 39
9 16 73
10 16 94
11 16 69
12 16 57
13 16 24
14 16 43
15 16 77
16 41 0
17 3 21
18 0 98
19 45 39
20 66 62
21 8 53
22 69 47
23 48 53
Решение с ix
является deprecated.
Ответ 2
Еще одно решение -
df.at[0:15, 'A']=16
print(df.head(20))
ВЫВОД:
A B
0 16 44
1 16 86
2 16 97
3 16 79
4 16 94
5 16 24
6 16 88
7 16 43
8 16 64
9 16 39
10 16 84
11 16 42
12 16 8
13 16 72
14 16 23
15 16 28
16 18 11
17 76 15
18 12 38
19 91 6
Ответ 3
В дополнение к другим ответам, вот что вы можете сделать, если у вас есть список отдельных индексов:
indices = [0,1,3,6,10,15]
df.loc[indices,'A'] = 16
print(df.head(16))
Выход:
A B
0 16 4
1 16 4
2 4 3
3 16 4
4 1 1
5 3 0
6 16 4
7 2 1
8 4 4
9 3 4
10 16 0
11 3 1
12 4 2
13 2 2
14 2 1
15 16 1