Home > front end >  How to convert timedelta to integer in pandas?
How to convert timedelta to integer in pandas?

Time:05-13

I have a column 'Time' in pandas that includes both integer and time deltas in days:

index               Time
1                     91
2                     28
3      509 days 00:00:00
4      341 days 00:00:00
5      250 days 00:00:00

I am wanting to change all of the Time deltas to integers, but I am getting many errors when trying to pick and choose which values to convert, as it throws errors when I try to convert an integer within the column rather than a TD.

I want this:

index               Time
1                     91
2                     28
3                    509 
4                    341 
5                    250 

I've tried a few variations of this to check if it's an integer, as I'm not concerned with those:

for x in finished['Time Future']:
    if isinstance(x, int):
        continue
    else:
        finished['Time'][x] = finished['Time'][x].astype(int)

But It is not working at all. I can't seem to find a solution.

CodePudding user response:

This seems to work:

# If the day counts are actual integers:
m = ~df.Time.apply(lambda x: isinstance(x, int))

# OR, in case the day counts are strings:
m = ~df.Time.str.isdigit()

df.loc[m, 'Time'] = df.Time[m].apply(lambda x: pd.Timedelta(x).days)

Results in:

  Time
1   91
2   28
3  509
4  341
5  250
  • Related