Python 如何根据第2列的条件从dataframe的第1列删除行?
我已经看到了很多关于如何根据条件删除数据帧行的答案 但是,我有一个带有X和Y值的python数据帧 当y在3到37范围内时,我想删除范围3到10和33到40的X值 我们怎样才能做到这一点 这就是数据帧的外观:Python 如何根据第2列的条件从dataframe的第1列删除行?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我已经看到了很多关于如何根据条件删除数据帧行的答案 但是,我有一个带有X和Y值的python数据帧 当y在3到37范围内时,我想删除范围3到10和33到40的X值 我们怎样才能做到这一点 这就是数据帧的外观: X Y Z 0 34.587329 0.448762 0.572807 1 34.587325 0.700001 0.579152 2 34.587327 0
X Y Z
0 34.587329 0.448762 0.572807
1 34.587325 0.700001 0.579152
2 34.587327 0.950507 0.578303
3 34.587328 1.199202 0.579037
4 34.587328 1.445252 0.581698
... ... ... ...
20956 0.013592 41.207004 0.585673
20957 0.013495 40.411135 0.554721
20958 0.013909 41.701004 0.571247
20959 0.014094 41.962998 0.578334
20960 0.014193 42.208740 0.555786
使用
您还可以使用isin
+range()
。
不同之处在于,通过这种方式,您只能包括左侧限制:
df['X'].isin(range(3, 10))
你能提供样品数据吗?我看不出这些数字是连续的、已排序的还是有其他重要特征。编辑问题以添加dataframe@Billhuang我得到一个错误:ValueError:点不能包含NaN。原始数据帧没有任何NaN值是否要删除满足条件的行,或在满足条件时在列X的行中放入一些值(如NaN)?删除所需的行
df_filtered=df.loc[hold_X|hold_y]
,打印(df_filtered)
df['X'].isin(range(3, 10))