用0天代替NaT

时间:2018-03-12 17:10:32

标签: python-3.x pandas

我有一个看起来谎言的pandas数据框:

A      
3 days    
NaT       
4 days

有没有办法在0天内更换NaT?

感谢, 编

4 个答案:

答案 0 :(得分:4)

df.A = pd.to_timedelta(df.A)
df.fillna(0)

       A
0 3 days
1 0 days
2 4 days

答案 1 :(得分:3)

另一种方法是使用.replace

d = {'A': ['3 days', '4 days', 'NaT']}
df = pd.DataFrame(data=d)
df.replace({'NaT': '0 day'}, inplace=True)

输出:

    A
0   3 days
1   4 days
2   0 day

答案 2 :(得分:0)

请注意,其他答案已不再是最新的。首选语法为:

df['column'].fillna(pd.Timedelta(seconds=0))

前面提到的

df['column'].fillna(0)

将导致:

  

FutureWarning:不建议将整数传递给fillna,这将引发   未来版本中的TypeError。要保留旧的行为,请通过   pd.Timedelta(seconds = n)代替。 df ['column'] = df ['column']。fillna(0)

答案 3 :(得分:0)

当尝试使用0.24.1版本实现manoj基于替换的答案时,我发现我不得不使用“ pandas.NaT”而不是字符串“ Nat”:

import pandas as pd
...

df.replace({pd.NaT: "0 days"}, inplace=True)