Skip to main content

TypeError: unsupported operand type(s) for -: 'DatetimeArray' and 'relativedelta'

I'd like to do a manual train-test-split for a random forest or linear regression on a dataframe called whatever_df based on the Date column. I would use this column to select all rows that have dates earlier than 3 months before the most recent one in the column to make a new dataframe called train_df with those older dates, and a test_df with all the dates within the latest 3 months. In raw format the dataframe looks like:

        PC1         PC2         Date
0      -0.319258    -0.042817   2019-05-24
1      -0.246079    0.131233    2019-05-24
2      -0.037325    0.562841    2019-05-24
3      -0.080725    0.594007    2019-05-24
4       0.133341    0.322822    2019-05-24
             ...    ...   ...   ...
3607    -3.583419   3.766158    2022-06-26
3608    -3.305263   4.019327    2022-06-26
3609    -2.913036   4.854316    2022-06-26
3610    -2.755733   4.873996    2022-06-26
3611    -2.535929   4.582312    2022-06-26

So what I'd want for train_df would be all the rows where Date is up through March 2022 inclusive and test_df would be all the rows for March 2022-June 2022. I know I could just hardcode this but I would like a dynamic way to select rows based on month values, and I know with datetime formatted columns I could find the newest date with just max(df['Date']) but I'm not sure how to say in Python subtract 3 months from that

I have tried this:

from datetime import datetime
from dateutil.relativedelta import relativedelta
train_df = whatever_df[whatever_df['Date'] - relativedelta(months=3)]

But I get

TypeError: unsupported operand type(s) for -: 'DatetimeArray' and 'relativedelta'

Part of the problem is that each month's day in the Date column is somewhat arbitrary, so there really is no row with 2022-03-26 in the Date column, unless by sheer coincidence. Therefore, I need a way to select for just the month of the date in the Date column, and not exactly 3 months earlier to the day.



source https://stackoverflow.com/questions/73534022/typeerror-unsupported-operand-types-for-datetimearray-and-relativedelta

Comments

Popular posts from this blog

Confusion between commands.Bot and discord.Client | Which one should I use?

Whenever you look at YouTube tutorials or code from this website there is a real variation. Some developers use client = discord.Client(intents=intents) while the others use bot = commands.Bot(command_prefix="something", intents=intents) . Now I know slightly about the difference but I get errors from different places from my code when I use either of them and its confusing. Especially since there has a few changes over the years in discord.py it is hard to find the real difference. I tried sticking to discord.Client then I found that there are more features in commands.Bot . Then I found errors when using commands.Bot . An example of this is: When I try to use commands.Bot client = commands.Bot(command_prefix=">",intents=intents) async def load(): for filename in os.listdir("./Cogs"): if filename.endswith(".py"): client.load_extension(f"Cogs.{filename[:-3]}") The above doesnt giveany response from my Cogs ...

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Where and how is this Laravel kernel constructor called? [closed]

Where and how is this Laravel kernel constructor called? public fucntion __construct(Application $app, $Router $roouter) { } I have read the documentation and some online tutorial but I can find any clear explanation. I am learning Laravel and I am wondering where does this kernel constructor receives its arguments from. "POSTMOTERM" CLARIFICATION: Here is more clarity.I have checked the boostrap/app.php and it is only used for boostrapping the interfaces into the container class. What is not clear to me is where and how the Kernel class is instatiated and the arguments passed to the object calling the constructor.Something similar to; obj = new kernel(arg1,arg2) or, is the framework using some magic functions somewhere? Special gratitude to those who burn their eyeballs and brain cells on this trivia before it goes into a full blown menopause alias "MARKED AS DUPLICATE". To some of the itchy-finger keyboard warriors, a.k.a The mods,because I believe in th...