Pandas 在不同变量中设置触发器级别后的上限值
我希望将“原始水平”上限的值设置为另一列“NS”触发的水平(在本例中,abs(NS)>=4)。此新列“所需的_级别”是在保持“原始_级别”列不变的情况下创建的。当abs(NS)>=4时,下面的df显示了13.122和50.887的上限 我正在寻找一个通用的解决方案,它可以在两个方向上远离最低的abs(NS)水平,同时触发-4和+4触发器。若它并没有命中(可能并没有),那个么所需的级别只是原始的_级别 另外要注意的是,abs(NS)的尺寸从最小值(abs(NS))继续增长。在这种情况下,我把它设为0.0000,但可能是一些小数字,而不是零 提前感谢您为此提供的任何帮助首先使用查找上下剪辑值的索引,然后将这些值作为参数传递:Pandas 在不同变量中设置触发器级别后的上限值,pandas,triggers,Pandas,Triggers,我希望将“原始水平”上限的值设置为另一列“NS”触发的水平(在本例中,abs(NS)>=4)。此新列“所需的_级别”是在保持“原始_级别”列不变的情况下创建的。当abs(NS)>=4时,下面的df显示了13.122和50.887的上限 我正在寻找一个通用的解决方案,它可以在两个方向上远离最低的abs(NS)水平,同时触发-4和+4触发器。若它并没有命中(可能并没有),那个么所需的级别只是原始的_级别 另外要注意的是,abs(NS)的尺寸从最小值(abs(NS))继续增长。在这种情况下,我把它设为
In [14]:
clip = 4
lower = df.loc[df['NS'] <= -clip, 'Original_level'].idxmax()
upper = df.loc[df['NS'] >= clip, 'Original_level'].idxmin()
df['Original_level'] = df['Original_level'].clip(df.loc[lower, 'Original_level'], df.loc[upper, 'Original_level'])
df
Out[14]:
Original_level NS Desired_Level
0 13.122 -8.099 13.122
1 13.122 -6.830 13.122
2 13.122 -5.655 13.122
3 13.122 -4.561 13.122
4 14.580 -3.538 14.580
5 16.200 -2.577 16.200
6 18.000 -1.670 18.000
7 20.000 -0.813 20.000
8 22.000 0.000 22.000
9 25.300 0.774 25.300
10 29.095 1.511 29.095
11 33.459 2.216 33.459
12 38.478 2.891 38.478
13 44.250 3.538 44.250
14 50.887 4.160 50.887
15 50.887 4.758 50.887
16 50.887 5.335 50.887
[14]中的
夹子=4
lower=df.loc[df['NS']=clip'Original_level'].idxmin()
df['Original_level']=df['Original_level'].clip(df.loc[下,'Original_level'],df.loc[上,'Original_level']))
df
出[14]:
原始\u级别NS所需\u级别
0 13.122 -8.099 13.122
1 13.122 -6.830 13.122
2 13.122 -5.655 13.122
3 13.122 -4.561 13.122
4 14.580 -3.538 14.580
5 16.200 -2.577 16.200
6 18.000 -1.670 18.000
7 20.000 -0.813 20.000
8 22.000 0.000 22.000
9 25.300 0.774 25.300
10 29.095 1.511 29.095
11 33.459 2.216 33.459
12 38.478 2.891 38.478
13 44.250 3.538 44.250
14 50.887 4.160 50.887
15 50.887 4.758 50.887
16 50.887 5.335 50.887
Ed,我在我的示例数据上尝试了这一点,但当我将其转移到我的“生产”数据时,却没有成功。不同之处在于我对生产数据执行了groupby。如果样本数据已按日期和城市分组(例如),您能否提供一些见解。再次感谢你。JohnSorry您试图应用于groupby对象?调用reset\u index()
后它是否工作?真的,你应该发布一个新问题,因为更改需求会失去更改的上下文。我按照你的建议发布,只是在主题行的末尾添加了“\u after groupBy”
In [14]:
clip = 4
lower = df.loc[df['NS'] <= -clip, 'Original_level'].idxmax()
upper = df.loc[df['NS'] >= clip, 'Original_level'].idxmin()
df['Original_level'] = df['Original_level'].clip(df.loc[lower, 'Original_level'], df.loc[upper, 'Original_level'])
df
Out[14]:
Original_level NS Desired_Level
0 13.122 -8.099 13.122
1 13.122 -6.830 13.122
2 13.122 -5.655 13.122
3 13.122 -4.561 13.122
4 14.580 -3.538 14.580
5 16.200 -2.577 16.200
6 18.000 -1.670 18.000
7 20.000 -0.813 20.000
8 22.000 0.000 22.000
9 25.300 0.774 25.300
10 29.095 1.511 29.095
11 33.459 2.216 33.459
12 38.478 2.891 38.478
13 44.250 3.538 44.250
14 50.887 4.160 50.887
15 50.887 4.758 50.887
16 50.887 5.335 50.887