简体   繁体   中英

add rows to pandas dataframe based on days in week

So I'm fairly new to pandas and I run into this problem that I'm not able to fix.

I have the following dataframe:

import pandas as pd
df = pd.DataFrame({
    'Day': ['2018-12-31', '2019-01-07'],
    'Product_Finished': [1000, 2000],
    'Product_Tested': [50, 10]})

df['Day'] = pd.to_datetime(df['Day'], format='%Y-%m-%d')
df

I would like to add rows to my dateframe based on the column 'Day', ideally adding all other days of the weeks, but keeping the rest of the columns the same value. The output should look something like this:

    Day         Product_Finished    Product_Tested
0   2018-12-31  1000                50
1   2019-01-01  1000                50
2   2019-01-02  1000                50
3   2019-01-03  1000                50
4   2019-01-04  1000                50
5   2019-01-05  1000                50
6   2019-01-06  1000                50
7   2019-01-07  2000                10
8   2019-01-08  2000                10
9   2019-01-09  2000                10
10  2019-01-10  2000                10
11  2019-01-11  2000                10
12  2019-01-12  2000                10
13  2019-01-13  2000                10

Any tips would be greatly appreciated, thank you in advance!

You can achieve this by first creating a new DataFrame that contains the desired date range using pandas.date_range.

Step 2, use pandas.merge_asof specifying to get the last value.

You can re sample by

import datetime
import pandas as pd

df = pd.DataFrame({
'Day': ['2018-12-31', '2019-01-07'],
'Product_Finished': [1000, 2000],
'Product_Tested': [50, 10]})

df['Day'] = pd.to_datetime(df['Day'], format='%Y-%m-%d')
df.set_index('Day',inplace=True)

df_Date=pd.date_range(start=df.index.min(), end=(df.index.max()+ datetime.timedelta(days=6)), freq='D')
df=df.reindex(df_Date,method='ffill',fill_value=None)
df.reset_index(inplace=True)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM