我有一个看起来谎言的pandas数据框:
A
3 days
NaT
4 days
有没有办法在0天内更换NaT?
感谢, 编
答案 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)