df1
和df2
是来自测量的两个DataFrame
对象及其相对时间戳(无绝对时间)。 n
的最后df1['voltage']
值是n
的第一个df2['voltage']
,i。即有重叠的数据。我不知道n
。
我现在想要df3
,它以df1
和df2
连接,以便省去冗余数据。
有没有办法用大熊猫做到这一点?我试过调查merge
,join
和concat
方法,但我没有找到任何问题的解决方案 - 为了比较这两个对象而缺乏绝对时间似乎是问题所在。一个简短的例子(通常,时间和电压是浮点数,而不是整数):
DF1
name value dim time voltage
abc 000 s 0 5
ghi 001 m 1 6
NaN NaN NaN 2 5
NaN NaN NaN 3 6
NaN NaN NaN 4 7
NaN NaN NaN 5 7
NaN NaN NaN 6 6
NaN NaN NaN 7 7
NaN NaN NaN 8 7
NaN NaN NaN 9 6
DF2
name value dim time voltage
abc 000 s 0 7
ghi 001 m 1 6
NaN NaN NaN 2 7
NaN NaN NaN 3 7
NaN NaN NaN 4 6
NaN NaN NaN 5 4
NaN NaN NaN 6 2
NaN NaN NaN 7 6
NaN NaN NaN 8 7
NaN NaN NaN 9 7
在此示例中,df1
中包含df2
的最后5个值。该操作应该提供
DF3
name value dim time voltage
abc 000 s 0 5
def 001 m 1 6
NaN NaN NaN 2 5
NaN NaN NaN 3 6
NaN NaN NaN 4 7
NaN NaN NaN 5 7
NaN NaN NaN 6 6
NaN NaN NaN 7 7
NaN NaN NaN 8 7
NaN NaN NaN 9 6
NaN NaN NaN 10 4
NaN NaN NaN 11 2
NaN NaN NaN 12 6
NaN NaN NaN 13 7
NaN NaN NaN 14 7
它感觉就像一个简单而常见的问题,但我找不到任何东西,我现在唯一的想法就是
for i in xrange(1, len(df1['voltage'])):
l1 = df1['voltage'][-i:].values
l2 = df2['voltage'][:i].values
if np.allclose(l1, l2):
n = i
然后使用concat
。这非常缓慢(特别是因为在找到一场比赛后我不能break
;之后可能会有其他人。)
在熊猫中有没有快速(最好是简单)的方法?