Wie kann ich Pandas am ersten Tag eines jeden Jahres in DataFrame erneut einprobenPython

Python-Programme
Anonymous
 Wie kann ich Pandas am ersten Tag eines jeden Jahres in DataFrame erneut einproben

Post by Anonymous »

Ich habe einen Datenrahmen, der tägliche Daten enthält < /p>

Code: Select all

import pandas as pd
import numpy as np

# Set the random seed for reproducibility
np.random.seed(42)

# Generate random data
dates = pd.date_range(start='2020-06-25', periods=1679, freq='D')
open_prices = np.random.uniform(low=100, high=200, size=len(dates))
high_prices = open_prices + np.random.uniform(low=0, high=10, size=len(dates))
low_prices = open_prices - np.random.uniform(low=0, high=10, size=len(dates))
close_prices = np.random.uniform(low=low_prices, high=high_prices)

# Create the DataFrame
ohlc_data = pd.DataFrame({
'Open': open_prices,
'High': high_prices,
'Low': low_prices,
'Close': close_prices
}, index=dates)
< /code>

>>> ohlc_data
Open        High        Low         Close
Date
2020-06-25  137.454012  144.403523  129.235702  143.945741
2020-06-26  195.071431  198.532428  188.476323  195.793458
2020-06-27  173.199394  182.955496  165.236980  181.584150
2020-06-28  159.865848  166.275569  157.146388  164.104760
2020-06-29  115.601864  123.826670  108.678275  117.641837
... ... ... ... ...
2025-01-24  179.003044  184.073640  173.358878  175.845545
2025-01-25  130.467914  132.347118  124.462082  130.051784
2025-01-26  108.091928  108.861645  106.429375  108.432944
2025-01-27  140.298018  147.259579  136.500644  145.721364
2025-01-28  117.352451  121.180439  111.180509  115.331552
< /code>
Ich muss die Daten ab dem ersten Tag für jedes Jahr in DataFrame auf 3 Tage wieder aufnehmen < /p>
agg = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'}
resampled = ohlc_data.resample('3D').agg(agg)
< /code>

>>> resampled
Open        High        Low         Close
Date
2020-06-25  137.454012  198.532428  129.235702  181.584150
2020-06-28  159.865848  166.275569  108.678275  113.720371
2020-07-01  105.808361  195.845186  96.417676   161.755865
2020-07-04  170.807258  198.739371  100.149184  192.952485
2020-07-07  183.244264  188.269925  115.280878  118.845486
... ... ... ... ...
2025-01-15  185.142496  195.768948  111.549399  191.451661
2025-01-18  111.636640  184.883239  109.047597  136.075629
2025-01-21  187.797432  191.054177  175.267831  176.687211
2025-01-24  179.003044  184.073640  106.429375  108.432944
2025-01-27  140.298018  147.259579  111.180509  115.331552
Erstes Jahr:

Code: Select all

>>> resampled.loc['2020-01-01': '2020-06-26']
Open        High        Low         Close
Date
2020-06-25  137.454012  198.532428  129.235702  181.584150
2020-06-28  159.865848  166.275569  108.678275  113.720371
Das ist in Ordnung, weil ich vor 2020-06-25 keine Daten habe. < /p>

Code: Select all

>>> resampled.loc['2021-01-01': '2021-01-06']
Open        High        Low         Close
Date
2021-01-03  190.041806  192.176919  128.095988  134.056420
2021-01-06  134.920957  195.614503  129.865870  189.599085
< /code>
Resampling Hier beginnen von 2021-01-03, ich muss von 2021-01-01 < /p>
 Drittes Jahr: < /strong> < /p>
>>> resampled.loc['2022-01-01': '2022-01-06']
Open        High        Low         Close
Date
2022-01-01  140.348287  147.026333  98.926715   103.562334
2022-01-04  175.513726  177.367027  158.572894  169.912020
Resampling in diesem Jahr funktioniert so, wie ich es brauche, ab 2022-01-01
Ich habe versucht, den Ursprungsparameter zu verwenden: < /p>

Code: Select all

agg = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'}
ori = str(ohlc_data.index[0].date().replace(month=1, day=1))
resampled = ohlc_data.resample('3D', origin=ori).agg(agg)
Aber dies funktioniert nur mit dem ersten Jahr in DataFrame

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post