有一个问题:我正在尝试做一个拉满数据的校准正则,现有两列数据,第一列是拉曼频移值,第二列是拉曼频移值对应的绝对强度值,我需要在几个特定的拉曼峰值值的周围±5的范围内选出绝对强度最大的对应的拉曼峰值,我学习了正则表达式后觉得不好实现,网上我也没找到啥可参考的,大佬们有什么思路吗?
举一个例子:我有几个特定值比如328.8,我取328.8±5的区间,然后找到在这个区间内对应的所有的绝对强度绝对强度(也就是第二列)的最大值,然后在找到与之对应的拉曼峰值。
下图是数据截图:
有一个问题:我正在尝试做一个拉满数据的校准正则,现有两列数据,第一列是拉曼频移值,第二列是拉曼频移值对应的绝对强度值,我需要在几个特定的拉曼峰值值的周围±5的范围内选出绝对强度最大的对应的拉曼峰值,我学习了正则表达式后觉得不好实现,网上我也没找到啥可参考的,大佬们有什么思路吗?
举一个例子:我有几个特定值比如328.8,我取328.8±5的区间,然后找到在这个区间内对应的所有的绝对强度绝对强度(也就是第二列)的最大值,然后在找到与之对应的拉曼峰值。
下图是数据截图:
试试这个:
# 导入工具包
import pandas as pd
import numpy as np
np.random.seed(12)
# 模拟的数据, 可以用自己真实的数据
data = pd.DataFrame({'拉曼频移值':np.random.randint(5,1000,50),
'绝对强度值':np.random.randint(100,500,50)})
#需要查的值, 就是你说的328.8, 举例如果是274
i = 274
# 索引位置, 查找274对应的索引及上下5个数
i_index = data['拉曼频移值'][data['拉曼频移值'].values==i].index[0]
datai = data.iloc[i_index-5:i_index+5]
# 输出绝对强度值最大时的拉曼频移值、绝对强度值
print(datai.loc[datai['绝对强度值'].idxmax()])