Python 当存在具有相同值的列时,Numpy二维数组(或数据帧)如何相交?
假设我有两个Numpy二维数组:Python 当存在具有相同值的列时,Numpy二维数组(或数据帧)如何相交?,python,arrays,numpy,pandas,Python,Arrays,Numpy,Pandas,假设我有两个Numpy二维数组: A = ('2010-01-04', 8019.0) ('2010-01-05', 8046.0) ('2010-01-06', 8028.0) ... A的列是“时间”和“值” B = ('2010-01-03', 3073.0) ('2010-01-04', 3068.0) ('2010-01-05', 3068.0) ... B的列也是“时间”和“价值”。 现在,当A['time']=B['time']
A = ('2010-01-04', 8019.0)
('2010-01-05', 8046.0)
('2010-01-06', 8028.0)
...
A的列是“时间”和“值”
B = ('2010-01-03', 3073.0)
('2010-01-04', 3068.0)
('2010-01-05', 3068.0)
...
B的列也是“时间”和“价值”。
现在,当A['time']=B['time']时,我想选择A和B的行
A1 = ('2010-01-04', 8019.0)
('2010-01-05', 8046.0)
...
B1 = ('2010-01-04', 3068.0)
('2010-01-05', 3068.0)
...
有没有一种有效的方法?
我已尝试选择A['time']和B['time']的交点,并使用np.where选择行:
time_A = np.array(A['time'])
time_B = np.array(B['time'])
time_inter = np.intersect1d(time_A,time_B)
index_A = np.where(time_A == time_inter)
A1 = A[index_A]
关于pandas DataFrame,我用同样的方法来完成工作。有没有更好的方法?至少不要“拾取”时间列,直接获取A1和B1?对不起,你只是要求像内部
合并那样的交叉点?所以A.merge(B,on='time')
?或者A[A['time'].isin(B['time']]]
?谢谢。我尝试了合并和isin,但出现了一个错误。是否有两个错误?