Python 按列对数据帧设置阈值
我从一个具有6个自由度的传感器收集数据,现在我正试图在其上执行一些绘图和最终的信号处理任务 我制作了一个Pandas数据帧,并试图根据列“Stamp”(以秒为单位的时间戳值)设置阈值或剪裁数据集。到目前为止,我已经创建了我的数据帧:Python 按列对数据帧设置阈值,python,pandas,matplotlib,Python,Pandas,Matplotlib,我从一个具有6个自由度的传感器收集数据,现在我正试图在其上执行一些绘图和最终的信号处理任务 我制作了一个Pandas数据帧,并试图根据列“Stamp”(以秒为单位的时间戳值)设置阈值或剪裁数据集。到目前为止,我已经创建了我的数据帧: headers = ["Stamp", "liny1", "linz1", "angy1", "angz1", "linx2", "liny2"] df = pd.read_csv("Test2.csv", header=0, names = headers, de
headers = ["Stamp", "liny1", "linz1", "angy1", "angz1", "linx2", "liny2"]
df = pd.read_csv("Test2.csv", header=0, names = headers, delimiter = ';')
df
这给了我:
我现在希望在18秒之前设置数据阈值,因为之后的一切都只是噪声。我尝试在熊猫中使用阈值函数,但我不确定是否正确。有人能指出我的错误是什么吗
df_thresh = df.clip(lower=None, upper=18)
我想你想要:
将所有较高的值替换为
18
至18
:
df_thresh = df.clip(lower=None, upper=18) #df.clip_upper(18)
print (df_thresh)
Stamp liny1 linz1 angy1 angz1 linx2 liny2
0 11 18 6 18 2 3 3
1 12 18 18 18 18 5 13
2 18 18 11 18 10 0 18
3 18 12 13 18 18 18 18
4 18 18 18 18 18 18 18
听起来你想用
loc
过滤你的数据,过滤时间不超过19秒
df.loc[df['Stamp'] < 19] # Not sure what units 'Stamp' is in. Seconds?
你的建议对我有效。然而,我不断地得到一个关键错误,所以我通过添加编码信息修复了这个问题,现在它可以正常工作了。是的,“Stamp”是以秒为单位的。
df_thresh = df.clip(lower=None, upper=18) #df.clip_upper(18)
print (df_thresh)
Stamp liny1 linz1 angy1 angz1 linx2 liny2
0 11 18 6 18 2 3 3
1 12 18 18 18 18 5 13
2 18 18 11 18 10 0 18
3 18 12 13 18 18 18 18
4 18 18 18 18 18 18 18
df.loc[df['Stamp'] < 19] # Not sure what units 'Stamp' is in. Seconds?
>>> pd.Series(range(16,21)).clip_upper(18)
0 16
1 17
2 18
3 18
4 18
dtype: int64