2017-11-22 2 views
-1

以下のように私は2つのデータフレームを持っている:そこDF1に2つの数字がある、と私はDF2に二つの数字量をカウントするどのように私は他の列に基づいて1つの列のデータを選択することができますか?

df1 = DataFrame({'a': np.random.randint(10, size=2)}) 
df2 = DataFrame({'a': np.random.randint(10, size=100)}) 

。答えはdf1 ['a']の右側にあります。

私が使用しているのはエラーですが、値の長さがインデックスの長さと一致しません。

誰でもこの質問をどうやってぶつけるのですか?

私はdf2 ['a']。isin(df1 ['a'])。sum()を使用していますが、結果として2つの数値の合計が得られます。

私はのような結果をしたい:私が正しく理解していれば

 
No Amount 
8 5 
1 5 

答えて

2
df2.a.value_counts().reindex(df1.a) 
Out[369]: 
a 
4 11 
5  5 
Name: a, dtype: int64 

sum

を追加

 
No Amount 
8 3 
1 2 

の代わりに、

df2.a.value_counts().reindex(df1.a).sum() 
Out[370]: 16 
+0

あなたの答えをありがとう。しかし、まだ問題がある、2つの金額は同じです、1つは間違っています –

+0

@yuchenhuangは私のコードの最初の行をチェック.. – Wen

+0

それは完璧に私の問題を解決する、本当に本当にあなたの時間のために!!!!!! –

1

In [22]: df2['a'].isin(df1['a']).sum() 
Out[22]: 18 
+0

ご回答ありがとうございます。私はあなたの方法を使用しますが、結果は正しくありません。問題は、2つの金額が同じで、1つが正しいが、別の金額が正しくなく、数が同じであるということです。 –

関連する問題