我有一个数据框" df"如果列的值比另一列中的值低,我想更改列的值,所以我有:
A B C
2017-01-01 10 200 24
2017-01-02 20 300 28
2017-01-03 30 400 29
2017-01-04 40 500 512
2017-01-05 50 600 680
2017-01-06 60 700 999
... .. .. ..
2017-01-31 100 1200 1400
我的目标是:每当B的元素高于C的元素(在同一行上)时,B将被除以整数,直到B中的值低于C中的值。
我尝试使用while循环:
while df['C']<df['B']:
for i in range (0,len(df)-1):
for k in range(0,10000):
df[i]['B']=df[i]['B']/k
这不起作用,我收到以下错误消息:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有没有人知道如何解决这个问题?非常感谢你
答案 0 :(得分:0)
以下将函数f应用于df中的每一行。除数从2开始并递增,而行[&#39; B&#39;]&gt;行[&#39; C&#39]。
def f(row):
divisor = 2
while row['B'] > row['C']:
row['B'] = row['B'] / divisor
divisor += 1
return row
df.apply(f, axis=1)
print(df)
B C
0 8 24
1 12 28
2 16 29
3 500 512
4 600 680
5 700 999