import pandas as pd
import numpy as np
x1 = [1,2,4,-3,4,1]
df1 = pd.DataFrame({'x':x1})
我想向df1添加一个新列-'condition'-在出现负数时该值为1,否则为0, 我希望其余找到负数后,将该列的值设置为1
所以,我将寻找所需的输出,如下所示:
condition x
0 0 1
1 0 2
2 0 4
3 1 -3
4 1 4
5 1 1
答案 0 :(得分:2)
到目前为止,还没有人使用cummax
:
In [165]: df1["condition"] = (df1["x"] < 0).cummax().astype(int)
In [166]: df1
Out[166]:
x condition
0 1 0
1 2 0
2 4 0
3 -3 1
4 4 1
5 1 1
答案 1 :(得分:1)
使用np.cumsum
:
df1['condition'] = np.where(np.cumsum(np.where(df1['x'] < 0, 1, 0)) == 0, 0, 1)
输出:
x condition
0 1 0
1 2 0
2 4 0
3 -3 1
4 4 1
5 1 1
答案 2 :(得分:1)
您可以在此处使用布尔序列:
df1['condition'] = (df1.index >= (df1['x'] < 0).idxmax()).astype(int)
print(df1)
x condition
0 1 0
1 2 0
2 4 0
3 -3 1
4 4 1
5 1 1