Pandas中带有索引移位的条件置换

时间:2016-08-14 12:44:34

标签: python pandas dataframe

在数据框中有以下列:

0
0
0
0
0
5

我想检查大于阈值的值。如果找到,则设置为零并向上移动差值阈值,在新位置设置阈值。让我们说阈值= 3,然后得到的列必须是:

0
0
0
3
0
0

快速转型的想法吗?

1 个答案:

答案 0 :(得分:0)

对于此DataFrame:

df
Out: 
    A
0   0
1   0
2   0
3   0
4   0
5   5
6   0
7   0
8   0
9   0
10  6
11  0
12  0
threshold = 3
above_threshold = df['A'] > threshold
df.loc[df[above_threshold].index - (df.loc[above_threshold, 'A'] - 3).values, 'A'] = 3
df.loc[above_threshold, 'A'] = 0
df
Out: 
    A
0   0
1   0
2   0
3   3
4   0
5   0
6   0
7   3
8   0
9   0
10  0
11  0
12  0