查找散点图中的下界

问题描述 投票:0回答:1

这个问题实际上与我两天前发布的一个问题有关。仅供参考,这是它的链接: 问题版本1

由于我的思考方式显然没有答案,所以我的想法是过滤数据。 所以,我有这个数据集:

    d = {'Point': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40], 
 'Interval 1': [92.417, 117.364, 126.302, 121.816, 126.083, 85.267, 84.977, 85.610, 84.909, 84.535, 85.024, 85.059, 84.798, 84.001, 84.157, 104.918,'','','','','','','','','','','','','','','','','','','','','','','',''],
'Interval 2':['','','','','','','','','','','','','','','','',157.884,163.604,122.905,84.770,83.386,83.530,83.418,83.423,83.350,83.618,83.486,83.846,83.622,83.796,83.942,84.068,84.379,84.175,84.010,84.439,84.479,84.599,84.998,101.860]}

我将数据集转换为数据框:

data = pd.DataFrame(d)

然后对数据进行过滤,以便我仅获得间隔 1 和 2 中最低 10% 的值。

我寻找两列中的最小值:

min_val = min(data['Interval 1'].apply(pd.to_numeric,errors='coerce').min(), data['Interval 2'].apply(pd.to_numeric,errors='coerce').min())

然后我需要将空字符串转换为 NaN

cols = ['Interval 1', 'Interval 2']

data[cols] = data[cols].apply(pd.to_numeric, errors='coerce')

数据在 Excel 图表中的显示如下: enter image description here 我想做的是让 python 代码查看数据并仅选择两个系列的低值。比如查看第一个值,然后检查下一个值是否更高 -> 如果是,则存储第一个值,如果不是,则临时存储第二个值并对所有数据点重复该过程。 也许还有其他选择,我愿意接受所有建议。 谢谢!

python
1个回答
0
投票

我正在尝试提炼你的问题。

首先,我不知道你想用

min_val
达到什么目的,你得到了它,然后你就不再提它了。

其次,您显示的图表与您提供的数据不符。显然,

Interval 1
在高度约 85 处有一个“平坦”部分。

无论如何,我会尽力回答你的主要问题。要以“pandas”方式执行此操作,您应该使用

shift
。让我们重点关注
Interval 1
。您可以像这样创建一个移位列:`data['Interval 1 moving'] = data['Interval 1'].shift(1) - 这会将列移位 1

然后,您可以通过将其与其移位列进行比较来按

data['Interval 1']
进行过滤,就像链接的问题一样:

data['lower points interval 1'] = data['Interval 1 next row'] > data['Interval 1']

这将创建一个包含 True/False 的列,您可以对其进行过滤。

© www.soinside.com 2019 - 2024. All rights reserved.