我有以下df
,
A B
3 days NaT
NaT 1 days
4 days 3 days
NaT NaT
dtype
A
和B
的{{1}}为timedelta64[ns]
,我想从两列days
中获取timedelta
,首先,我尝试删除A
的所有行,而B
恰好是NaT
,
daydelta = df.dropna(subset=['A', 'B'], how='all')
然后在每个列值
上获取days
daydelta[['A', 'B']] = daydelta[['A', 'B']].applymap(lambda x: int(Timedelta(x).days))
但由于days
中没有NaT
属性,因此失败了。我想知道如何从days
值获取timedelta
,同时用字符NaT
替换timedelta value does not exist
。
答案 0 :(得分:1)
使用与NaT
合作的dt.days
:
print (df['A'].dt.days)
0 3.0
1 NaN
2 4.0
3 NaN
Name: A, dtype: float64
df[['A', 'B']] = df[['A', 'B']].apply(lambda x: x.dt.days)
print (df)
A B
0 3.0 NaN
1 NaN 1.0
2 4.0 3.0
3 NaN NaN