Python 如何将日期格式字符串转换为bool True,将其他格式字符串转换为False?
上述脚本的输出为:Python 如何将日期格式字符串转换为bool True,将其他格式字符串转换为False?,python,pandas,Python,Pandas,上述脚本的输出为: import pandas import numpy df=pandas.DataFrame({'col1':['a','b','c','b'],'col2':['N','2018-03-12 15:35',numpy.NaN,'2017-06-12 15:35'],'col3':['c','b','b','b']}) print(df) 对于col2列,我想将所有yyyy-mm-dd-hh:mm格式的字符串转换为bool-True,将其他字符串转换为False,保持Na值
import pandas
import numpy
df=pandas.DataFrame({'col1':['a','b','c','b'],'col2':['N','2018-03-12 15:35',numpy.NaN,'2017-06-12 15:35'],'col3':['c','b','b','b']})
print(df)
对于col2列,我想将所有yyyy-mm-dd-hh:mm格式的字符串转换为bool-True,将其他字符串转换为False,保持Na值不变。
预期结果如下:
col1 col2 col3
0 a N c
1 b 2018-03-12 15:35 b
2 c NaN b
3 b 2017-06-12 15:35 b
怎么做?
提前谢谢 您可以使用以下内容:
col1 col2 col3
0 a False c
1 b True b
2 c NaN b
3 b True b
您可以使用以下内容:
col1 col2 col3
0 a False c
1 b True b
2 c NaN b
3 b True b
创建2个掩码-首先转换错误为“强制”的s并测试,同时测试此列:
m=df.col2.notna()
df.loc[m,'col2']=(pd.to_datetime(df.col2.dropna(),errors='coerce').isna()
.map({True:False,False:True}))
print(df)
col1 col2 col3
0 a False c
1 b True b
2 c NaN b
3 b True b
然后将其传递给-但有必要将NaN转换为None:
或使用:
创建2个掩码-首先转换错误为“强制”的s并测试,同时测试此列:
m=df.col2.notna()
df.loc[m,'col2']=(pd.to_datetime(df.col2.dropna(),errors='coerce').isna()
.map({True:False,False:True}))
print(df)
col1 col2 col3
0 a False c
1 b True b
2 c NaN b
3 b True b
然后将其传递给-但有必要将NaN转换为None:
或使用:
第二种方法中的m1,m2是什么?第二种方法中的m1,m2是什么?
df.loc[m2, 'col2'] = m1
print(df)
col1 col2 col3
0 a False c
1 b True b
2 c NaN b
3 b True b