import pandas as pd
d = {'col1': [1, 2,'np.nan',4,5], 'col2': ['A','B','C','D','E']}
df = pd.DataFrame(data=d)
col1 col2
0 1 A
1 2 B
2 np.nan C
3 4 D
4 5 E
for i in range(len(df)):
if df['col1'].iloc[i] == "np.nan":
df['col1'].iloc[i] = 16
print(df)
col1 col2
0 1 A
1 2 B
2 16 C
3 4 D
4 5 E
避免链式索引
正如评论中提到的,你的两个选择都不能保证有效。这个documentation解释了推理和基本原理。你知道吗
一个有效,另一个无效的事实是不值得调查的,因为这些都是可能改变的实现细节。你知道吗
对于标量,应该使用
iat
按整数位置设置值或按标签设置值at
。你知道吗^{} 用于整数位置的标量设置
^{} 对于标量设置,按标签
如果数据帧索引是常规的
pd.RangeIndex
,则可以简化最后一个赋值:欢迎使用Stackoverflow 评论中提供的答案是明确和充分的。你知道吗
iloc是一个很好的工具,我想补充一点,如果你想以你想要的方式使用它,你必须首先传递你想要选择行的列。在数据帧上循环以更改值的示例:
相关问题 更多 >
编程相关推荐