我想知道是否有一种方法可以在将一个df中的值与另一个df或另一个df中同时存在之前进行验证,然后再将它们堆叠在一起?
我有两个dfs
df = pd.concat([df1, df2])
df = df.sort_values(by=['id', 'timestamp']).reset_index(drop=True)
df
id timestamp
0 1 1959-06-01
1 1 2019-01-01
2 1 2019-01-02
3 2 1989-12-01
4 2 2019-01-15
5 3 1999-01-25
6 3 2019-01-17
7 3 2019-02-01
8 3 2019-02-03
在合并之前,有没有办法在连接之前验证df1中的I.D是否存在?我不需要合并,而是将df彼此串联在一起。
一个df具有多个ID和时间戳,另一个df仅具有一个ID,我想确保在这两个级联的df中只有两个ID中都存在的ID
谢谢!
答案 0 :(得分:0)
您可以在此处执行的一种解决方法是创建一个虚拟列:
df1["df"] = 1
df2["df"] = 2
df = pd.concat([df1, df2])
这样,您可以看到每一行的派生位置。
答案 1 :(得分:0)
检查整行
df3=pd.concat([df1,df2[~df2.isin(df1)]],ignore_index=True).dropna()
检查一列
df3=pd.concat([df1,df2[~df2['col_name'].isin(df1['col_name'])]],ignore_index=True).dropna()
答案 2 :(得分:0)
这是您要找的吗? 附加示例代码。
df = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'],'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})
other = pd.DataFrame({'key': ['K0', 'K1', 'K2'],'B': ['B0', 'B1', 'B2']})
new = df.set_index('key').join(other.set_index('key'))
new.dropna(axis=0, how='any', thresh=None, subset=None, inplace=True)
print(new)
或
import pandas as pd
df = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'],'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})
other = pd.DataFrame({'key': ['K0', 'K1', 'K2'],'A': ['A0', 'A1', 'A2']})
new = pd.merge(df , other , how = 'inner')
print(new)
这对您有帮助吗?
答案 3 :(得分:-1)
您可以使用df.isin,请尝试。.