2016-03-19 2 views
2

Что такое подходы панды к возможности подсчета строк, где выполняются несколько условий?Что такое подход pandas к подсчету текста, который соответствует условию?

Например:

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»?

В приведенном выше примере, я бы ожидать выход Сумма за 1 и 3:2 записи

ответ

2

в этом случае вы можете использовать in1d, которые проверяют appartenance:

np.in1d(df["A"],["1","3"]).sum() 

Это очень быстро.

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') 

Faster использование подход :

print ("Sum for 1 and 3:",np.sum(df['A'].str.contains("1|3")),"records") 
('Sum for 1 and 3:', 2, 'records') 
Смежные вопросы