我对编写和修改一个数据框的项目非常陌生。
现在,我有一个包含几列的数据帧,其中一个名为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
我希望有人能帮助我
答案 0 :(得分: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
使用方法DataFrame.loc,可以选择我们要更改的数据。根据布尔数组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