如何在python中使用pandas在for循环中按条件更改csv文件?
这是我用来做这件事的代码,但我知道这很糟糕,可以在for循环中完成:如何在python中使用pandas在for循环中按条件更改csv文件?,python,csv,pandas,Python,Csv,Pandas,这是我用来做这件事的代码,但我知道这很糟糕,可以在for循环中完成: df=pd.read_csv('file.csv',sep=',') if "c[1]=2" in text: df.loc[df.id==1,'r']=254 df.loc[df.id==1,'g']=0 df.loc[df.id==1,'b']=0 else: if "c[2]=3" in text: df.loc[df.id==2,'r']=254 df.loc[df.id==2,'g']=0
df=pd.read_csv('file.csv',sep=',')
if "c[1]=2" in text:
df.loc[df.id==1,'r']=254
df.loc[df.id==1,'g']=0
df.loc[df.id==1,'b']=0
else:
if "c[2]=3" in text:
df.loc[df.id==2,'r']=254
df.loc[df.id==2,'g']=0
df.loc[df.id==2,'b']=0
else:
if "c[3]=4" in text:
df.loc[df.id==3,'r']=254
df.loc[df.id==3,'g']=0
df.loc[df.id==3,'b']=0
直至:
if "c[34]=35" in text:
df.loc[df.id==34,'r']=254
df.loc[df.id==34,'g']=0
df.loc[df.id==34,'b']=0
else: #this is the final else
df.r=0
df.g=254
df.r=0
df.to_csv("file.csv",index=False, sep=',')
如果索引越来越多,我就不能这样做。
这就是要使用python和条件更改csv中的值。
它能在循环中完成吗?
谢谢。最多35人
for i in range(1,35)
if "c["+str(i)+"="+str(i+1) in text:
df.loc[df.id==i+1,'r']=254
df.loc[df.id==i+1,'g']=0
df.loc[df.id==i+1,'b']=0
else :
df.r=0
df.g=254
df.r=0
以35为上限
for i in range(1,35)
if "c["+str(i)+"="+str(i+1) in text:
df.loc[df.id==i+1,'r']=254
df.loc[df.id==i+1,'g']=0
df.loc[df.id==i+1,'b']=0
else :
df.r=0
df.g=254
df.r=0
谢谢Mayeul sgc,但我认为这不起作用,因为else将在循环的最后一步中更改所有值。我做了与代码中的else语句相同的else语句,它访问else,但行不是文本,但它确实修改了所有内容。您的意思是将所有其他行更改为您输入的通用值吗?在最后一个循环中,如果该语句不正确,它将更改文件的所有列。每行的默认值为r=0、g=254、b=0。如果每行中的条件为True,则值必须为r=254,g=0,b=0。我想我可以这样做:首先:df.r=0 df.g=254 df.b=0,然后执行for循环,就像您在没有else的情况下执行Mayeul sgc一样。谢谢Mayeul sgc,但我认为这不起作用,因为else将在循环的最后一步更改所有值。我做了与代码中的else语句相同的else语句,它访问else,但行不是文本,但它确实修改了所有内容。您的意思是将所有其他行更改为您输入的通用值吗?在最后一个循环中,如果该语句不正确,它将更改文件的所有列。每行的默认值为r=0、g=254、b=0。如果每一行中的条件为真,那么值必须是r=254,g=0,b=0。我想我可以这样做:首先:df.r=0 df.g=254 df.b=0,然后执行for循环,就像在没有else的情况下执行Mayeul sgc一样。