Pandas Series: asfreq() function
Convert Pandas TimeSeries to specified frequency
The asfreq() function is used to convert TimeSeries to specified frequency.
Optionally provide filling method to pad/backfill missing values.
Returns the original data conformed to a new index with the specified frequency. resample is more appropriate if an operation, such as summarization, is necessary to represent the data at the new frequency.
Syntax:
Series.asfreq(self, freq, method=None, how=None, normalize=False, fill_value=None)
Parameters:
Name | Description | Type/Default Value | Required / Optional |
---|---|---|---|
freq | DateOffset object, or string | Required | |
method | Method to use for filling holes in reindexed Series (note this does not fill NaNs that already were present):
|
{'backfill'/'bfill', 'pad'/'ffill'} Default Value: None |
Required |
how | For PeriodIndex only, see PeriodIndex.asfreq | {'start', 'end'} Default Value: end |
Required |
normalize | Whether to reset output index to midnight | bool Default Value: False |
Required |
fill_value | Value to use for missing values, applied during upsampling (note this does not fill NaNs that already were present). | scalar | Optional |
Returns: converted - same type as caller
Example - Start by creating a series with 4 one minute timestamps:
Python-Pandas Code:
import numpy as np
import pandas as pd
index = pd.date_range('1/1/2019', periods=4, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0], index=index)
df = pd.DataFrame({'s':series})
df
Output:
s 2019-01-01 00:00:00 0.0 2019-01-01 00:01:00 NaN 2019-01-01 00:02:00 2.0 2019-01-01 00:03:00 3.0
Example - Upsample the series into 20 second bins:
Python-Pandas Code:
import numpy as np
import pandas as pd
index = pd.date_range('1/1/2019', periods=4, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0], index=index)
df = pd.DataFrame({'s':series})
df.asfreq(freq='20S')
Output:
s 2019-01-01 00:00:00 0.0 2019-01-01 00:00:20 NaN 2019-01-01 00:00:40 NaN 2019-01-01 00:01:00 NaN 2019-01-01 00:01:20 NaN 2019-01-01 00:01:40 NaN 2019-01-01 00:02:00 2.0 2019-01-01 00:02:20 NaN 2019-01-01 00:02:40 NaN 2019-01-01 00:03:00 3.0
Example - Upsample again, providing a fill value:
Python-Pandas Code:
import numpy as np
import pandas as pd
index = pd.date_range('1/1/2019', periods=4, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0], index=index)
df = pd.DataFrame({'s':series})
df.asfreq(freq='20S', fill_value=7.0)
Output:
s 2019-01-01 00:00:00 0.0 2019-01-01 00:00:20 7.0 2019-01-01 00:00:40 7.0 2019-01-01 00:01:00 NaN 2019-01-01 00:01:20 7.0 2019-01-01 00:01:40 7.0 2019-01-01 00:02:00 2.0 2019-01-01 00:02:20 7.0 2019-01-01 00:02:40 7.0 2019-01-01 00:03:00 3.0
Example - Upsample again, providing a method:
Python-Pandas Code:
import numpy as np
import pandas as pd
index = pd.date_range('1/1/2019', periods=4, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0], index=index)
df = pd.DataFrame({'s':series})
df.asfreq(freq='20S', method='bfill')
Output:
s 2019-01-01 00:00:00 0.0 2019-01-01 00:00:20 NaN 2019-01-01 00:00:40 NaN 2019-01-01 00:01:00 NaN 2019-01-01 00:01:20 2.0 2019-01-01 00:01:40 2.0 2019-01-01 00:02:00 2.0 2019-01-01 00:02:20 3.0 2019-01-01 00:02:40 3.0 2019-01-01 00:03:00 3.0
Previous: Modify Pandas series in place using non-NA values
Next: Get the last row(s) without any NaNs in Pandas series
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics