Python comparing lists values

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Galinsky
  • Registratie: Oktober 2013
  • Niet online

Galinsky

--------->

Topicstarter
Mijn vraag
Ik heb 2 dataframes die ik versimpeld uitleg. Elke dataframe heeft meer informatie, echter doet dit er niet toe.


1ste dataframe bestaat uit datums binnen 1 jaar en de counts van elke dag van die datums. De 1ste colom bestaat uit heel veel datums waarvan alle datums vaker voorkomen. de 2de colomn heeft een count van elke datum hoe vaak die voorkomt. De 2de column heeft dus informatie over de 1ste column. Als er achter een datum bijvoorbeeld 64 staat komt die datum 64 keer voor in de 1ste column. Ook komt deze 64 dus 64x achter die datum te staan in de dataframe. Deze 2de colom heb ik echter zelf gemaakt in de hoop dat ik een groter probleem op kon lossen.

in het 2 dataframe heb ik een column met datums, echter maar een stuk of 60, deze datums vallen binnen het boven beschreven jaar. Nu wil ik de counts van het 1ste dataframe in een nieuwe column achter de bijbehorende datum van deze 2de dataframe.

eventueel wil ik ook een count van de bijbehorende datum + de count van de volgende dag.

Relevante software en hardware die ik gebruik
Python

Wat ik al gevonden of geprobeerd heb
Heel veel, ben al een avond + nacht bezig. |:(

Hartelijk dank voor het lezen! :)

Alle reacties


Acties:
  • 0 Henk 'm!

  • DHH
  • Registratie: Augustus 2014
  • Laatst online: 07-09-2024

DHH

Ik ben zelf nog een beginner in Python (vandaar ook de volgende code), maar volgens mij zou je het eerste deel van je vraagstuk kunnen oplossen met DataFrame.merge:

Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import pandas as pd

# Create Dataframe 1
dates = pd.date_range(start='2018/12/01', periods = 10)
counts = pd.Series([3, 15, 12, 64, 87, 34, 12, 12, 34, 12])

df1 = pd.DataFrame(data=dates, columns = ['Date'])
df1.insert(loc=1, column = 'Count', value = counts)

df1

"""
        Date  Count
0 2018-12-01      3
1 2018-12-02     15
2 2018-12-03     12
3 2018-12-04     64
4 2018-12-05     87
5 2018-12-06     34
6 2018-12-07     12
7 2018-12-08     12
8 2018-12-09     34
9 2018-12-10     12
"""

# Create Dataframe 2
df2 = pd.DataFrame(data=pd.date_range(start='2018/12/04', periods = 5), columns=['Date'])

df2
"""
        Date
0 2018-12-04
1 2018-12-05
2 2018-12-06
3 2018-12-07
4 2018-12-08
"""


# Merge Dataframes    
df2.merge(df1, how='inner', left_on='Date', right_on='Date')
"""
        Date  Count
0 2018-12-04     64
1 2018-12-05     87
2 2018-12-06     34
3 2018-12-07     12
4 2018-12-08     12
"""

Acties:
  • 0 Henk 'm!

  • Galinsky
  • Registratie: Oktober 2013
  • Niet online

Galinsky

--------->

Topicstarter
Hartelijk dank voor je reactie! Dit is inderdaad precies het idee dat ik wil bereiken. Echter zijn er dublicates in de dates. Ook in de 2de dataframe met de maar 60 rows. Hierdoor kan deze oplossing niet gezien je geen dublicates van beide kanten kan mergen.

Nu blijft 1 zijde van de nieuwe dataframe op NaN

Acties:
  • 0 Henk 'm!

  • DHH
  • Registratie: Augustus 2014
  • Laatst online: 07-09-2024

DHH

Is het de bedoeling dat die dubbele datumwaarden eerst worden samengevoegd? Zo ja, dan zou je even moeten zoeken op een group by.

Indien je de dubbele datumwaarden wilt behouden, op basis waarvan weet je script dan welke waarden waar bijhoren?