Я хотел бы получить счет для # из предыдущих 5 значений в df ['A'], которые являются текущим значением в df ['A'] & также> = df2 ['A']. Я стараюсь избегать цикла для каждой строки и столбцов, потому что я хотел бы применить это к большему набору данных.Как я могу реплицировать excel COUNTIFS в python/pandas?
Учитывая это ...
list1 = [[21,101],[22,110],[25,113],[24,112],[21,109],[28,108],[30,102],[26,106],[25,111],[24,110]]
df = pd.DataFrame(list1,index=pd.date_range('2000-1-1',periods=10, freq='D'), columns=list('AB'))
df2 = pd.DataFrame(df * (1-.05))
Я хотел бы вернуть это (решить в Excel с COUNTIFS) ...
Линия ниже достигает первой части (спасибо Александр), и Divakar и DSM также взвесили ранее (here и here).
df3 = pd.DataFrame(df.rolling(center=False,window=6).apply(lambda rollwin: sum((rollwin[:-1] < rollwin[-1]))))
Но я не могу добавить сравнение к df2. Пожалуйста помоги.
ПОСЛЕДУЮЩИЕ на 10/27/16:
Как бы написать лямбда выше, в качестве стандартной функции?
10/28/16:
Ниже, с Col «А» от оба ДФА и df2, я пытаюсь подсчитать, сколько из предыдущих 5 значений из ДФА [ «A»] падение между текущий df2 ['A'] и df ['A']. Говоря иначе, сколько из каждой оранжевой коробки падает между желтым диапазоном низких частот?
UPDATE: разные данные песни1 производит неправильный DF3 ...
list1 = [[21,101],[22,110],[25,113],[24,112],[21,109],[26,108],[25,102],[26,106],[25,111],[22,110]]
df = pd.DataFrame(list1,index=pd.date_range('2000-1-1',periods=10, freq='D'), columns=list('AB'))
df2 = pd.DataFrame(df * (1-.05))
df3 = pd.DataFrame(
df.rolling(center=False,window=6).apply(
lambda rollwin: pd.Series(rollwin[:-1]).between(rollwin[-1]*0.95,rollwin[-1]).sum()))
df
Out[9]:
A B
2000-01-01 21 101
2000-01-02 22 110
2000-01-03 25 113
2000-01-04 24 112
2000-01-05 21 109
2000-01-06 26 108
2000-01-07 25 102
2000-01-08 26 106
2000-01-09 25 111
2000-01-10 22 110
df3
Out[8]:
A B
2000-01-01 NaN NaN
2000-01-02 NaN NaN
2000-01-03 NaN NaN
2000-01-04 NaN NaN
2000-01-05 NaN NaN
2000-01-06 1.0 0.0
2000-01-07 2.0 0.0
2000-01-08 3.0 1.0
2000-01-09 2.0 3.0
2000-01-10 1.0 3.0
EXCEL Примеры (11/14): см ниже, пытаясь подсчитать, сколько чисел в синей коробке падения между диапазон выделен оранжевым цветом.
Ваш ' df2' не воспроизводится. 'df_data' здесь не определен. – Psidom
фиксированный Psidom. Благодарю. – MJS
Будем ли мы убирать этот вопрос и отвечать? – Dickster