web-dev-qa-db-ja.com

Pandas-インデックスに基づいて値を置換

これが以前に尋ねられた場合、謝罪、私は答えを見つけることができないようです。

そのようにデータフレームを作成する場合:

import pandas as pd, numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('AB'))

たとえば、列Aのエントリを行0〜15の16番に変更するにはどうすればよいですか。つまり、インデックスのみに基づいてセルを置換するにはどうすればよいですか?

13
Colin O'Brien

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を使用したソリューションは、 非推奨 です。

36
jezrael

もう1つの解決策は

df.at[0:15, 'A']=16

print(df.head(20))

[〜#〜] output [〜#〜]

     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
Amandeep

他の回答に加えて、個々のインデックスのリストがある場合にできることは次のとおりです。

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
0
nischi