df1 , df2 2 dataframe objects measurement own relative time stamps (no absolute time). last n values of df1['voltage'] first n of df2['voltage'], i. e. there overlapping data. n unknown me.
i want df3, concatenates df1 , df2 in such way redundant data left out.
is there way using pandas? i've tried looking merge , join , concat methods, didn't find solutions question -- lack of absolute time in order compare 2 objects seems problem. short example (in general, time , voltage floats, not ints):
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 in example, last 5 values of df1 present in df2. operation should deliver
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 it feels simple , common problem, cannot find , idea right along lines of
for in xrange(1, len(df1['voltage'])): l1 = df1['voltage'][-i:].values l2 = df2['voltage'][:i].values if np.allclose(l1, l2): n = and using concat. excruciatingly slow (especially since cannot break after 1 match found; there others later).
is there fast (and preferably easy) way in pandas?
Comments
Post a Comment