2016-05-16 3 views
0

私は2つのデータフレームを持っています。まず:パンダ。カットと.isin機能

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] 

第二:

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 

私はloc_xloc_yloc_x_binと同じ行のloc_y_binであるかどうかを把握しようとしています。詳細については、この記事を参照してください。 Are values in one dataframe in bins of another dataframe?。しかし、私が今調べようとしているのは、下の出力の3行目と5行目が「False」である理由です。

[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 

私はその下のコードを実行することが(0,10]ビンを含んでいるので(0、10]はdf_loc.loc_x_bin「である」ように私には思える。なぜ私が?

上記の3番目と5番目の行に Falseを取得しています
[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]* 
+0

'xstep'は定義されていません。推測すると、 'xstep = 10'と思われます。 – Neapolitan

+0

いいえ、私は' xstep'を定義していません。コードに含めるのを忘れてしまいました。 – Hound

答えて

0

注上記のコードでは(0, 10]で余分なスペース:

s = pd.Series(["(-20, -10]", "(-140, -130]", "(0, 10]"], dtype = "category") 

それは次のようになります。

s = pd.Series(["(-20, -10]", "(-140, -130]", "(0, 10]"], dtype = "category") 
関連する問題