pandas 如何根据多个条件删除数据框行

wkyowqbh  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(106)

我正在尝试基于第二个Dataframe(df 2)中的值,使用多个条件从一个Dataframe(df1)中删除Dataframe行。我感兴趣的数据在这些 Dataframe 中比较被标记为'Timestamp'(T)和'delta_t'(dt)。
我希望应用的函数是,当T_{df1} == T_{df2}时,然后删除dt_{df2} - 0.1 < dt_{df1} < dt_{df2}中的所有行
换句话说,当每个 Dataframe 的时间戳值相等时,我就想比较delta_t值。如果df_1delta_t值落在df2delta_t值的+/-0.1范围内,则从df 1中删除这些行。
任何帮助是非常感谢!
干杯!
我已经尝试使用df1.loc['timestamp'].isin(df2['timestamp']获取具有相应时间戳值的行。但是我不知道如何比较delta_t值和删除属于特定范围的行。
编辑:数据最初保存在一个包含多列的数据框架中。其中一列被标记为“通道”。为了形成我比较的两个 Dataframe (df 1,df 2),我使用以下方法基于通道值进行分离:
noise = df1[df1['channel'] == 3]['timestamp_copy'] df2 = df1.loc[(df1['timestamp_copy'].isin(noise))]
因此,df 1中的行数>> df 2。

vlf7wbxs

vlf7wbxs1#

首先欢迎来到stackoverflow社区
如果我理解正确,那么这就满足了你的任务,你可以选择满足你所需条件的索引,然后从 Dataframe df 1中删除它们,如下所示:

import pandas as pd

df1 = pd.DataFrame([[1,2],[10,11]],columns=['a','b'])
df2 = pd.DataFrame([[1,2],[11,10]],columns=['a','b'])

indices_to_removed = df1[ ( ( df1['a'] == df2['a'] ) & ( abs( df1['b'] - df2['b'] ) <= 0.1 ) ) ].index
df1 = df1.drop(indices_to_removed)
print(df1)

字符串
只需将a、B替换为列名即可。
希望我得到了你,它帮助,快乐编码!

相关问题