Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用pandas在for循环中按条件更改csv文件?_Python_Csv_Pandas - Fatal编程技术网

如何在python中使用pandas在for循环中按条件更改csv文件?

如何在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

这是我用来做这件事的代码,但我知道这很糟糕,可以在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.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一样。