2017-04-26 4 views
0

I zwei Sätze von Daten (Datenrahmen), die jeweils mit zwei Spalten, die zu einander beziehen (läßt sie x und y bezeichnen), wie solche:pandas Datenrahmen Resampling-Säule von nicht-Zeitreihe

Set 1:

x | y 
0.1 | 1 
0.2 | 2 
0.3 | 3 
0.4 | 2 
0.5 | 3 
0.6 | 4 
0.7 | 5 

Set 2:

x | y 
0.12 | 0 
0.21 | 2 
0.31 | 5 
0.44 | 4 
0.52 | 3 
0.61 | 1 
0.76 | 1 

I die Y-Werte beiden Sätze summieren soll (bei gleichen x Punkten), aber x leicht falsch ausgerichtet ist. Um dies zu lösen Ich dachte, es wäre am besten, beiden Sätze zur Interpolation von x = 0,12 bis 0,7 0,001 Schritte im Wesentlichen:

mini = max(set1.x.min(), set2.x.min()) 
maxi = max(set1.x.max(), set2.x.max()) 
x_interpolation_points = np.arange(maxi, mini, 0.001) 

# Next step: interpolate both sets 
# last step: sumY = set1.y + set2.y 

Wie würde man diesen accomplisch? . Im Falle eines timeserie würde ich Resampling verwenden() interpoliert(), aber dies ist kein timeserie ..

+0

Sie können 'interpolate' auf einer normalen Serie siehe die [docs] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.interpolate.html#pandas.Series.interpolate) – EdChum

+0

Das ist, was ich dachte, aber in In den Dokumenten sehe ich keine Optionen zur Interpolation bestimmter Werte. – Yorian

+0

Warum nicht einfach 'set2 ['x'] = set2 ['x']. Round (1)' so dass die Werte übereinstimmen? Oder möchten Sie Set1 so interpolieren, dass Set2 genau übereinstimmt? Du könntest also 'set1.set_index ('x'). Reindex (np.arange (maxi, mini, 0.001) )' und dann kannst du 'merge' – EdChum

Antwort

0

Am Ende löste ich es mit numpy: numpy.interp()