2016-03-19 1 views
2

複数の条件が満たされている行を数えるためのパンダのアプローチは何ですか?例えば条件と一致するテキストを数えるためのパンダのアプローチとは何ですか?

df = pd.DataFrame({ 'A' : ["1","2","3","4"], 
        'B' : pd.Timestamp('20130102'), 
        'C' : pd.Series(1,index=list(range(4)),dtype='float32'), 
        'D' : np.array([3] * 4,dtype='int32'), 
        'E' : pd.Categorical(["test","train","test","train"]), 
        'F' : 'foo' }) 
df 

私は単一の条件をカウントする方法として、以下を証明しています:

print ("Sum for 1 and 3:",(df['A']=="1").sum(),"records") 

「1」と「3」の両方をカウントするいくつかの方法は何ですか?

上記の例では

、Iは1と3のために合計の出力を期待:2記録

答えて

2

この場合、あなたはin1dを使用することができ、appartenanceを確認してください。

​​

これは非常に高速です。

1

あなたが使用することができます。

print ("Sum for 1 and 3:",((df['A']=="1") | (df['A']=="3")).sum(),"records") 
('Sum for 1 and 3:', 2, 'records') 

または(|str.containsを使用しますor):

print ("Sum for 1 and 3:",(df['A'].str.contains("1|3")).sum(),"records") 
('Sum for 1 and 3:', 2, 'records') 

高速化アプローチの使用:

print ("Sum for 1 and 3:",np.sum(df['A'].str.contains("1|3")),"records") 
('Sum for 1 and 3:', 2, 'records')