UWAGA: szuka pomocy w skuteczny sposób to zrobić oprócz mega dołączyć, a następnie obliczenie różnicy między datamiPandy - SQL sprawa rachunku równowartość
mam table1
identyfikator kraju i datę (bez duplikaty tych wartości) i chcę podsumować informację o numerze table2
(która ma kraj, datę, klastel_x i zmienną count, gdzie klastel_x jest klastrem_1, klastrem_2, klastrem_3), tak aby table1
dołączyła do niego każdą wartość identyfikatora klastra i podsumowanie liczyć od table2
, gdzie data od table2
wystąpił w ciągu 30 dni przed datą w table1
.
Wierzę, że to jest proste w SQL: jak to zrobić w Pandach?
select a.date,a.country,
sum(case when a.date - b.date between 1 and 30 then b.cluster_1 else 0 end) as cluster1,
sum(case when a.date - b.date between 1 and 30 then b.cluster_2 else 0 end) as cluster2,
sum(case when a.date - b.date between 1 and 30 then b.cluster_3 else 0 end) as cluster3
from table1 a
left outer join table2 b
on a.country=b.country
group by a.date,a.country
EDIT:
Oto nieco zmienionym przykładem. Powiedzmy, że jest to tabela 1, zagregowany zbiór danych z datą, miastem, klastrem i liczbą. Poniżej znajduje się zestaw danych "zapytanie" (tabela 2). w tym przypadku chcemy zsumować pole licznika z tabeli1 dla klastra1, klastra2, klastra3 (jest ich w rzeczywistości 100) odpowiadających identyfikatorowi kraju, o ile pole daty w tabeli1 znajduje się w ciągu 30 dni wcześniej.
Na przykład pierwszy wiersz zestawu danych zapytania ma datę 2/2/2015 i kraj 1. W tabeli 1 istnieje tylko jeden wiersz w ciągu 30 dni wcześniej i jest on dla klastra 2 z liczbą 2.
Oto zrzut z dwóch tabel w pliku CSV:
date,country,cluster,count
2014-01-30,1,1,1
2015-02-03,1,1,3
2015-01-30,1,2,2
2015-04-15,1,2,5
2015-03-01,2,1,6
2015-07-01,2,2,4
2015-01-31,2,3,8
2015-01-21,2,1,2
2015-01-21,2,1,3
i Tabela 2:
date,country
2015-02-01,1
2015-04-21,1
2015-02-21,2
mógłbyś dodawać zestawy przykładowe dane _wejście_ (5-7 wierszy w CSV/dict/JSON/python kod formatu __as text__, więc możemy użyć to podczas kodowania)? [Jak utworzyć przykład minimalny, pełny i sprawdzalny] (http://stackoverflow.com/help/mcve) – MaxU
Hows, że MaxU? –
jest teraz znacznie lepiej, ale zmieniłeś algorytm - czy chcesz sumować 'cluster_X' z' table2' lub 'count' z' table1'? Czy możesz również opublikować pożądany wynik? – MaxU