我有一个数据帧(df),它看起来像:
0 1 2 3
0 BBG.apples.S BBG.XNGS.bananas.S 0
1 BBG.apples.S BBG.XNGS.oranges.S 0
2 BBG.apples.S BBG.XNGS.pairs.S 0
3 BBG.apples.S BBG.XNGS.mango.S 0
4 BBG.apples.S BBG.XNYS.mango.S 0
5 BBG.XNGS.bananas.S BBG.XNGS.oranges.S 0
6 BBG.XNGS.bananas.S BBG.XNGS.pairs.S 0
7 BBG.XNGS.bananas.S BBG.XNGS.kiwi.S 0
8 BBG.XNGS.oranges.S BBG.XNGS.pairs.S 0
9 BBG.XNGS.oranges.S BBG.XNGS.kiwi.S 0
10 BBG.XNGS.peaches.S BBG.XNGS.strawberrys.S 0
11 BBG.XNGS.peaches.S BBG.XNGS.strawberrys.S 0
12 BBG.XNGS.peaches.S BBG.XNGS.strawberrys.S 0
13 BBG.XNGS.peaches.S BBG.XNGS.kiwi.S 0
我正在尝试使用以下方法更新数据帧中的值(第一行,第三列):
for index, row in df.iterrows():
status = row[3]
if int(status) == 0:
df[index]['3'] = 1
但当我打印出数据帧时,它保持不变
有人能告诉我我做错了什么吗?你知道吗
谢谢
如果您正试图根据具有特定值的行更新所有行的第三列,如示例代码所示,那么在dataframe上使用
where
方法会容易得多:不能通过这样的迭代来修改数据帧。See here.
如果只想修改[1,3]处的元素,可以直接访问:
如果要将第3列中的每个
0
都转换为1
,请尝试以下操作:EDIT:另外,docs for ^{} 表示您经常会得到一个副本,这就是操作失败的原因。你知道吗
将最后一行替换为:
显然,正如其他人提到的,最好使用向量化表达式,而不是迭代,尤其是对于大型数据帧。你知道吗
相关问题 更多 >
编程相关推荐