我有一個包含入院日期(ADMIDATE)和出院日期(DISDATE)的手術活動資料框架。它有60萬行,共78列,但我已經為一個特定的手術過濾了它。我想計算住院時間,并將其作為另一列加入。 通常我使用
df["los"] = (df["DISDATE"] - df["ADMIDATE"] ).dt.day
我最近不得不清理資料,而且一定是用了與以前不同的方法,因為我現在得到了一個負的los,例如。
| DISDATE. | . ADMIDATE. | .los. | |
|---|---|---|---|
| 2019-12-24 | 2019-12-08 | -43805. | 2019-05-15 | . | . 2019-03-26 | 50.
| 2019-10-11 | |||
| . 2019-10-07 | |||
| 2019-06-20 | |||
| 2019-06-16 | |||
| 4 | 4 | 2019-04-11 | 2019-04-08? |
df.info()
df.info()
<class '`pandas`.core.frame.DataFrame' >
RangeIndex。5條目,0至4。
資料列(共78列)。
5 ADMIDATE 5個非空的datetime64[ns] 。 28 DISDATE 5個非空的datetime64[ns]
。<class 'pandas.core.frame.DataFrame'> RangeIndex。5個條目,0到4 資料列(共78列):
5 ADMIDATE 5 Non-null datetime64[ns]
28 DISDATE 5 non-null datetime64[ns] 。
我不確定如何對這個問題提出正確的問題,以及為什么它只影響一些行。在清理資料時,一些DISDATE必須從另一列(也是一個日期列)中填充,因為它們是不完整的,我想知道是否由于保留了一些原始資料,所以這些資料是負面的,即使列印新的DISDATE看起來不錯。
uj5u.com熱心網友回復:
你的樣本作業得很好,有正確的輸出(第一行有16天)
你能試試嗎?
你能不能試一下,檢查一下問題是否仍然存在:
你能不能試一下?
import io
data = df[['DISDATE', 'ADIDATE']].to_csv()
test = pd.read_csv(io.StringIO(data), index_col=0,
parse_dates=['DISDATE', 'ADIDATE'])
print(test['DISDATE'].sub(test['ADMIDATE']).dt.day)
輸出:
0 16
1 50
24
3 4
4 3
dtype: int64
Update
要除錯你的壞日期,請嘗試:
df.loc[pd. to_datetime(df['ADMIDATE'/span>], errors='coerce'/span>).isna(), 'ADMIDATE'/span>]
你應該看到值不是一個正確日期的行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/310906.html
標籤:
上一篇:在javascript或型別腳本中為當前日期添加時間
下一篇:每一列值選擇20個結果
