我是python和pandas的新手,我需要一些想法。假设我有以下DataFrame:
0 1 2 3 4 5
1 5 5 5 5 5
2 5 5 5 5 5
3 5 5 5 5 5
4 5 5 5 5 5
我想遍历每一行并更改特定列的值。假设我想将列(2,3,4)中的所有值都更改为3。
这是我尝试过的方法,我走的路正确吗?
for row in df.iterrows():
for col in range(2, 4):
df.set_value('row', 'col', 3)
编辑: 感谢您的答复。简单的解决方案是显而易见的,但是如果我想将值更改为此...,例如:
0 1 2 3 4 5
1 1 2 3 4 5
2 6 7 8 9 10
3 11 12 13 14 15
4 16 17 18 19 20
答案 0 :(得分:2)
如果在处理数据框时使用循环,则几乎总是走错了轨道。
为此,您可以使用vectorized分配:
df[[2, 3, 4]] = 3
示例:
df = pd.DataFrame({1: [1, 2], 2: [1, 2]})
print(df)
# 1 2
# 0 1 1
# 1 2 2
df[[1, 2]] = 3
print(df)
# 1 2
# 0 3 3
# 1 3 3
答案 1 :(得分:2)
你可以做到
df.iloc[:,1] = 3 #columns 2
df.iloc[:,2] = 3
df.iloc[:,3] = 3