Python 比较由重复数据组成的两个数据帧之间的数据,并执行一些操作

Python 比较由重复数据组成的两个数据帧之间的数据,并执行一些操作,python,pandas,numpy,Python,Pandas,Numpy,POID列下的数据是唯一的,不会重复。(数据帧名称为df1) 另一方面,以下数据帧可以重复POID 我的主要目标是,如果在df1中找不到POID,则删除df2中的POID。我怎样才能最有效地处理它 为了便于测试,我添加了两个独立的虚拟数据帧 data1 = {'userid': [1, 2, 5, 5, 7, 10, 10, 10, 15, 15], 'checkinid': [100, 120, 90, 95, 100, 130, 90, 80, 200, 120]}

POID列下的数据是唯一的,不会重复。(数据帧名称为df1)

另一方面,以下数据帧可以重复POID

我的主要目标是,如果在df1中找不到POID,则删除df2中的POID。我怎样才能最有效地处理它

为了便于测试,我添加了两个独立的虚拟数据帧

data1 = {'userid': [1, 2, 5, 5, 7, 10, 10, 10, 15, 15], 
         'checkinid': [100, 120, 90, 95, 100, 130, 90, 80, 200, 120]}

data2 = {'checkinid': [100, 120, 90, 95], 
         'latitude': [-90, -92, 48, 52],
         'longitude': [42, 54, 51, -27]}
在这些示例中,两个数据帧上的一些checkinid是不同的

根据data1的虚拟数据集预期输出

expectingoutput= {'userid': [1, 2, 5, 5, 7, 10, 15], 
                  'checkinid': [100, 120, 90, 95, 100,90,120]}

基于您添加的数据。最快的解决方法是合并两个数据帧,检查NAN的位置(这将指向未找到的键),然后过滤掉它们:

以下是如何做到这一点:

data1 = {'userid': [1, 2, 5, 5, 7, 10, 10, 10, 15, 15], 
         'checkinid': [100, 120, 90, 95, 100, 130, 90, 80, 200, 120]}

data2 = {'checkinid': [100, 120, 90, 95], 
         'latitude': [-90, -92, 48, 52],
         'longitude': [42, 54, 51, -27]}

expectingoutput= {'userid': [1, 2, 5, 5, 7, 10, 15], 
                  'checkinid': [100, 120, 90, 95, 100,90,120]}

# Create df1
df1 = pd.DataFrame(data1)
df1


检查
isin
:df2[df2.index.isin(df1['poid'])”`。感谢您的建议,我添加了虚拟数据集。isin函数生成假值,即使它在其他数据帧中是相同的数据。它无法检测索引位置何时不同确保数据类型相同,例如
str
vs
int
# Create df2
df2 = pd.DataFrame(data2)
df2
# Merge both dataframes using using the key checkinid 
merged_df = df1.merge(df2, how='left', on=['checkinid'])
merged_df
# Find those rows where NaNs are present and remove them from the original DataFrame
df1[~merged_df.isna().any(axis=1)]