Col*_*ien 14 python replace numpy dataframe pandas
如果以前有人问过这个道歉,我似乎无法找到答案.
如果我像这样创建一个数据帧:
import pandas as pd, numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('AB'))
Run Code Online (Sandbox Code Playgroud)
例如,如何将A列中的条目更改为行0 -15中的数字16?换句话说,我如何完全基于索引替换单元格?
jez*_*ael 39
用途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
Run Code Online (Sandbox Code Playgroud)
解决方案与ix被弃用.
nis*_*chi 15
除了其他答案之外,如果您有单个索引列表,您可以执行以下操作:
indices = [0,1,3,6,10,15]
df.loc[indices,'A'] = 16
print(df.head(16))
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
小智 8
非常有趣的观察,下面的代码确实改变了原始数据帧中的值
df.loc[0:15,'A'] = 16
Run Code Online (Sandbox Code Playgroud)
但是如果你使用类似这样的代码
df.loc[0:15]['A'] = 16
Run Code Online (Sandbox Code Playgroud)
它只会返回具有更改值的数据帧的副本,并且不会更改原始df对象中的值。希望这能为处理此问题的人节省一些时间。
另一种解决方案是
df.at[0:15, 'A']=16
print(df.head(20))
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37474 次 |
| 最近记录: |