Home > Blockchain >  frontfill or backfill of STRING column at resample() in pandas
frontfill or backfill of STRING column at resample() in pandas

Time:11-14

is there any methode while doing resampling() to ffill() or bfill() a object column?

Suppose we have:

Date Sort Value
2022-10-23 15:40:41 A 1
2022-10-23 18:43:13 B 2
2022-10-24 15:40:41 C 3
2022-10-24 18:43:13 D 4

i would like to have following results with:

df.resample("15min").mean()
Date Sort Value
2022-10-23 15:45:00 A 1
2022-10-23 16:00:00 A 1
2022-10-23 16:15:00 A 1
2022-10-23 16:35:00 A 1
... ... ...
2022-10-23 18:00:00 D 1
2022-10-23 18:15:00 D 1
2022-10-23 18:30:00 D 1
2022-10-23 18:45:00 D 1

but it always kick out the "sort column". would be nice if anyone here can help!

best M.

CodePudding user response:

You can specify the aggregation functions for your columns separately, for example:

df = df.resample("15min").agg({"Sort": min, "Value": np.mean}).ffill()

Output:

                    Sort  Value
Date
2022-10-23 15:30:00    A    1.0
2022-10-23 15:45:00    A    1.0
2022-10-23 16:00:00    A    1.0
2022-10-23 16:15:00    A    1.0
2022-10-23 16:30:00    A    1.0
...                  ...    ...
2022-10-24 17:30:00    C    3.0
2022-10-24 17:45:00    C    3.0
2022-10-24 18:00:00    C    3.0
2022-10-24 18:15:00    C    3.0
2022-10-24 18:30:00    D    4.0

CodePudding user response:

If need forward filling first valeus per Sort and mean per Value use:

df = df.resample("15min").agg({'Sort':'first', 'Value':'mean'}).ffill()
print (df)
                    Sort  Value
Date                           
2022-10-23 15:30:00    A    1.0
2022-10-23 15:45:00    A    1.0
2022-10-23 16:00:00    A    1.0
2022-10-23 16:15:00    A    1.0
2022-10-23 16:30:00    A    1.0
                 ...    ...
2022-10-24 17:30:00    C    3.0
2022-10-24 17:45:00    C    3.0
2022-10-24 18:00:00    C    3.0
2022-10-24 18:15:00    C    3.0
2022-10-24 18:30:00    D    4.0

[109 rows x 2 columns]
  • Related