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