Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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 如果这个循环,那么那个循环_Python_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 如果这个循环,那么那个循环

Python 如果这个循环,那么那个循环,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我对编码和处理一个项目非常陌生,我正在修改一些数据帧 现在,我有了一个数据框,其中包含几个a列,其中一个名为Check的列的值为True或False。该值基于代码中的公式给出 我想要实现的是另一个名为Price的列将添加+1,直到列Check为True 我尝试了以下代码行,但没有一行有效 df['Price'] = df['Price'].apply(lambda x: +1 if x == False) i = df['Check'] while i == False: df = d

我对编码和处理一个项目非常陌生,我正在修改一些数据帧

现在,我有了一个数据框,其中包含几个a列,其中一个名为
Check
的列的值为
True
False
。该值基于代码中的公式给出

我想要实现的是另一个名为
Price
的列将添加+1,直到列
Check
True

我尝试了以下代码行,但没有一行有效

df['Price'] = df['Price'].apply(lambda x: +1 if x == False)

i = df['Check']
while i == False:
    df = df['Price'] =+ 1

df['PRICE'] = df.ix[df.Check.isin(False), 'PRICE'] = +1

我希望有人能帮助我,首先,一个示例数据帧:

import pandas as pd

data = {'check': [True, True, False], 'price': [3, 2, 0]}
df = pd.DataFrame(data)
df
示例数据帧是:

    check   price
0   True    3
1   True    2
2   False   0
使用该方法,可以选择要更改的数据。根据布尔数组df['check']==True选择行,并使用其名称
price
选择列

df.loc[df['check'] == True, 'price']
给出所选行的索引和价格值:

0   3
1   2
然后,
check
true行中的价格可以增加:

df.loc[df['check'] == True, 'price'] += 1
df
现在
df
是:

    check   price
0   True    4
1   True    3
2   False   0
通过将这一行插入循环,价格将不断增加。然而,在某个时刻需要一些东西将check的值切换为false

请注意,
==True
是多余的:
df.loc[df['check','price']+=1
也可以工作

while循环的示例:

while not df['check'].all():   # loop while at least one check value is false
    print(df, '\n')
    df.loc[df['check'], 'price'] += 1  # increment the 'checked' price py one
    df.loc[df['check'] == False, 'check'] = True   # Switch the false to true, <- insert your formula
而不是df['check'].all():#在至少一个检查值为false时循环
打印(df,“\n”)
df.loc[df['check'],'price']+=1#增加'checked'价格py one

df.loc[df['check']==False,'check']=True#将False切换为True,欢迎!有关如何设置问题格式的提示,请参阅,以便我们可以重现您正在做的事情。此外,我可以直接看到您使用了
PRICE
PRICE
。如果您提供一个数据帧片段和一些示例输出,那么我们可以提供帮助。另外,请注意
a=+1
a=+1
a=1
相同。只有
a+=1
将值增加1,即。这是a=a+1的缩写,谢谢你的帮助!真的很有用。我添加了你的代码。但是使用while循环会产生以下错误:
ValueError:序列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
我现在有了以下代码:
I=df['check']而I==False:df.loc[df['check']==False,'price']+=1
然后我的while循环的公式是:它要遍历所有行吗?(那么就不需要了)还是要及时多次涨价?就是要涨价,直到所有的支票行都是真的。我成功了,非常感谢你的帮助!您是最好的:DI添加了另一个带有while循环的示例