用先前的变量替换数据框中的 NaT
Replace NaT in a dataframe with a previous variable
如何用之前创建(设置)的 date/variable 替换数据框中的 NaT
?
我得到了以下数据框:
Date Name CF
0 NaT Peter -10
0 2017-12-14 Peter -20
1 NaT Tomas -5.5
1 2017-12-15 Peter -25
2 NaT Tomas -3
2 2017-12-14 Tomas -5
3 NaT Walker -4.6
3 2017-12-15 Tomas 88
4 2017-12-15 Tomas -30
5 2017-12-15 Walker 15
我想用在项目开始时设置的变量替换 NaT:End
变量,如下所示:
format_date = "%d-%m-%Y"
end = datetime.date(2017, 12, 15)
我尝试了两种方法:首先,我使用了 Pandas 中的 np.where
,但它无法识别 NaT
。其次,我尝试了这个
test = table_final2.Date.astype(object).where(table_final2.Date.notnull(), end)
但这会导致 Date
列的格式混合
Date Name CF
0 2017-12-15 Peter -10
0 2017-12-14 00:00:00 Peter -20
1 2017-12-15 Tomas -5.5
1 2017-12-15 00:00:00 Peter -25
2 2017-12-15 Tomas -3
2 2017-12-14 00:00:00 Tomas -5
3 2017-12-15 Walker -4.6
3 2017-12-15 00:00:00 Tomas 88
4 2017-12-15 00:00:00 Tomas -30
5 2017-12-15 00:00:00 Walker 15
那么,如何准确替换NaT呢?
提前致谢!
PD:当 test.dtypes 将 Date 显示为对象时。
IIUC 你可以使用Series.fillna()
方法:
In [138]: end = pd.to_datetime('2017-12-15')
In [139]: df['Date'] = df['Date'].fillna(end)
In [140]: df
Out[140]:
Date Name CF
0 2017-12-15 Peter -10.0
0 2017-12-14 Peter -20.0
1 2017-12-15 Tomas -5.5
1 2017-12-15 Peter -25.0
2 2017-12-15 Tomas -3.0
2 2017-12-14 Tomas -5.0
3 2017-12-15 Walker -4.6
3 2017-12-15 Tomas 88.0
4 2017-12-15 Tomas -30.0
5 2017-12-15 Walker 15.0
如何用之前创建(设置)的 date/variable 替换数据框中的 NaT
?
我得到了以下数据框:
Date Name CF
0 NaT Peter -10
0 2017-12-14 Peter -20
1 NaT Tomas -5.5
1 2017-12-15 Peter -25
2 NaT Tomas -3
2 2017-12-14 Tomas -5
3 NaT Walker -4.6
3 2017-12-15 Tomas 88
4 2017-12-15 Tomas -30
5 2017-12-15 Walker 15
我想用在项目开始时设置的变量替换 NaT:End
变量,如下所示:
format_date = "%d-%m-%Y"
end = datetime.date(2017, 12, 15)
我尝试了两种方法:首先,我使用了 Pandas 中的 np.where
,但它无法识别 NaT
。其次,我尝试了这个
test = table_final2.Date.astype(object).where(table_final2.Date.notnull(), end)
但这会导致 Date
Date Name CF
0 2017-12-15 Peter -10
0 2017-12-14 00:00:00 Peter -20
1 2017-12-15 Tomas -5.5
1 2017-12-15 00:00:00 Peter -25
2 2017-12-15 Tomas -3
2 2017-12-14 00:00:00 Tomas -5
3 2017-12-15 Walker -4.6
3 2017-12-15 00:00:00 Tomas 88
4 2017-12-15 00:00:00 Tomas -30
5 2017-12-15 00:00:00 Walker 15
那么,如何准确替换NaT呢? 提前致谢!
PD:当 test.dtypes 将 Date 显示为对象时。
IIUC 你可以使用Series.fillna()
方法:
In [138]: end = pd.to_datetime('2017-12-15')
In [139]: df['Date'] = df['Date'].fillna(end)
In [140]: df
Out[140]:
Date Name CF
0 2017-12-15 Peter -10.0
0 2017-12-14 Peter -20.0
1 2017-12-15 Tomas -5.5
1 2017-12-15 Peter -25.0
2 2017-12-15 Tomas -3.0
2 2017-12-14 Tomas -5.0
3 2017-12-15 Walker -4.6
3 2017-12-15 Tomas 88.0
4 2017-12-15 Tomas -30.0
5 2017-12-15 Walker 15.0