我有一個df,你可以通過運行這段代碼得到它:
我有一個df,你可以通過運行這段代碼得到它:
import pandas as pd
from io import StringIO
dfs = ""
出生日期
2 19850100
3 19000100
5 19850100
6 19000100
7 19820100
8 19850100
9 19000100
10 19790100
11 19850100
""
df = pd.read_csv(StringIO(dfs.strip()), sep='s '/span>,
dtype={"BornDate"/span>: int})
df
輸出結果是:
BornDate
2 19850100
3 19000100
5 19850100[/span
6 19000100
7 19820100[/span
8 19850100
919000100
10 19790100[/span
11 19850100
我需要的是將BornDate轉換為基于變數ValuationDate的年齡。
年齡等于ValuationDate減去BornDate:
ValuationDate = 20201231。
ValuationDate=pd.to_datetime(ValuationDate)
df['BornDate']=pd.to_datetime(df['BornDate'] )
df['BornDate']=ValuationDate-df['BornDate']
df['BornDate']
但是它回傳:
2 00:00:00.000351<
3 00:00:00.001201[/span
5 00:00: 00.000351
6 00:00:00.001201[/span
7 00:00:00.000381[/span]。
8 00:00:00.000351[/span].
9 00:00:00.001201[/span
10 00:00: 00.000411
11 00:00: 00.000351
名稱。BornDate, dtype: timedelta64[ns] 。
輸出應該是:
2 35.1
3 12.01[/span
5 35.1
6120.1
7 38.1
8 35.1
9120.1
10 41.1
11 35.1
uj5u.com熱心網友回復:
假設你的列BornDate的格式與ValuationDate的格式一樣,都是YYYYmmdd,那么,你應該按以下方式改變你的代碼,以適應這種日期字串格式:
ValuationDate = 20201231。
ValuationDate=pd.to_datetime(ValuationDate, format='%Y%m%d')
df['BornDate']=pd.to_datetime(df['BornDate'], format='%Y%m%d')
df['BornDate'] = (ValuationDate - df['BornDate'] ) / np.timedelta64(1, 'Y')
資料輸入
將每個日期的日期從無效的00修改為01:
BornDate
2 19850101
3 19000101[/span
5 19850101[/span
6 190001
7 19820101[/span
8 19850101[/span
9 190001;/span>
10 19790101
11 198501
輸出
BornDate
2 35.998001
3 120.999062[/span]。
5 35.998001[/span
6 120.999062[/span
7 38.998747[/span
835.998001
9 120.999062[/span
10 41.999493
11 35.998001
uj5u.com熱心網友回復:
使用dt.microseconds:
>>> df['BornDate'].dt.microseconds.div(10)
2 35.1
3120.1
5 35.1
6120.1
7 38.1
8 35.1
9120.1
10 41.1
1135.1
名稱。BornDate, dtype: float64
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/309481.html
標籤:
