Ich habe zwei Datenframes. Erstens:Pandas .cut und .isin Funktionalität
s = pd.Series(["(-20, -10]", "(-140, -130]", "(0, 10]"], dtype = "category")
t = pd.Series(["(0, 50]", "(100, 150]", "(-50, 0]"], dtype = "category")
df_loc = pd.DataFrame({'loc_x_bin': s, 'loc_y_bin': t })
df_loc
[out]:
loc_x_bin loc_y_bin
(-20, -10] (0, 50]
(-140, -130] (100, 150]
(0, 10] (-50, 0]
Zweitens:
a = pd.Series([-15, 30, 5, -135, 5, -15])
b = pd.Series([25, 35, -45, -200, 25, 25])
data = pd.DataFrame({'loc_x': a, 'loc_y': b})
data
[out]:
loc_x loc_y
-15 25
30 35
5 -45
-135 -200
5 25
-15 25
Ich versuche, herauszufinden, ob loc_x
und loc_y
in loc_x_bin
und loc_y_bin
der gleichen Reihe sind. Siehe diesen Beitrag für weitere Details. Are values in one dataframe in bins of another dataframe?. Was ich jedoch jetzt herausfinden möchte, ist, warum die dritte und fünfte Zeile der Ausgabe "falsch" ist.
[in]: xstep = 10
[in]: pd.cut(data.loc_x, np.arange(-500, 500, xstep)).isin(df_loc.loc_x_bin))
[out]:
0 True
1 False
2 False*
3 True
4 False*
5 True
Wenn ich führen Sie den Code unten scheint es mir, dass (0, 10] ‚ist in‘ df_loc.loc_x_bin
, weil es eine (0,10]
bin enthält. Warum bekomme ich False
in der 3. und 5. Reihe oben?
[in]:
print pd.cut(data.loc_x, np.arange(-500, 500, xstep))
print df_loc.loc_x_bin
[out]:
0 (-20, -10]
1 (20, 30]
2 (0, 10]*
3 (-140, -130]
4 (0, 10]*
5 (-20, -10]
0 (-20, -10]
1 (-140, -130]
2 (0, 10]*
'xstep' ist nicht definiert; durch Vermutung scheint es zu sein: "xstep = 10" – Neapolitan
Nein, ich habe 'xstep' definiert, ich habe nur vergessen, es in den Code aufzunehmen. – Hound