简体   繁体   中英

How can i convert column into days in csv having string values in years , months , weeks using Python Pandas?

I have done a try with python as below:

import pandas as pd

df = pd.read_csv("master_list.csv", usecols = ['Duration'])
#month manipulation starts
df[df['Duration'].fillna('').str.contains('Months') & df['Duration'].fillna('').str.len().gt(0)]
df["Duration"] = df["Duration"].str.replace("\sMonths", "")
df['Duration'] = pd.to_numeric(df['Duration'], errors='coerce').fillna(0).astype(float)
df['Duration'] *= 30.436875
#month manipulation end
df[df['Duration'].fillna('').str.contains('Weeks') & df['Duration'].fillna('').str.len().gt(0)]
df["Duration"] = df["Duration"].str.replace("\sWeeks", "")
#df['Duration'] *= 30.436875

print(df)
Sample_Data = ["7 Months","1 Year","8 Weeks","3 Days"]
Expected Output = ["210 Days","365 Days","56 Days","3 Days"]

Module dateparser can parse text with weeks , years , months , days , etc.

import dateparser
import datetime

sample_data = ["7 Months","1 Year","8 Weeks","3 Days"]

today = datetime.datetime.now()

for item in sample_data:
    result = dateparser.parse(item)
    diff = today.date() - result.date()
    print(item, '|', diff.days)

Result:

7 Months | 212
1 Year | 365
8 Weeks | 56
3 Days | 3

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