python - 如何使用 pandas/python 从日期和字符串的列组合中删除时间戳?

标签 python pandas dataframe

假设我在数据帧 df 中有一个列 col1,如下所示,

col1                 |
2018-01-30 00:00:00  |
Yes                  |
                     |
nan                  |
None                 |

我想要以下输出 col1 没有时间戳,同时保持其余内容完整,

col1                 |
2018-01-30           |
Yes                  |
                     |
nan                  |
None                 |

我使用了以下代码行,

df['col2'] = pd.to_datetime(df['col1'], errors='coerce')

但似乎并没有解决上述问题。

我得到以下输出,

col1      |            
2018-01-30|
NaT       |           
NaT       |              
NaT       |           
NaT       |          

我正在寻找 pandas 解决方案,但理想情况是寻找一个可以使用 python 重复使用的函数。非常感谢任何帮助!

最佳答案

一个想法是将日期时间转换为字符串替代方案,然后将缺失值替换为原始值:

df['col1'] = (pd.to_datetime(df['col1'], errors='coerce').dt.strftime('%Y-%m-%d')
                .fillna(df['col1']))

或者将日期时间转换为Python日期:

df['col1'] = pd.to_datetime(df['col1'], errors='coerce').dt.date.fillna(df['col1'])

print (df)
         col1
0  2018-01-30
1         Yes
2            
3         NaN
4        None

关于python - 如何使用 pandas/python 从日期和字符串的列组合中删除时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65032674/

相关文章:

python - 计算滚动窗口中第一个值和最后一个值之间的差异

scala - Spark : Pivot with multiple columns

python - 将 pandas 列编码为分类值

python - 如何通过检查从 CSV 文件中删除重复项?

python - 无法使用 sqlite3 Python 模块正确执行 sql 脚本

python - 找不到docker python自定义模块

R 如何计算数据框中行之间的差异

python - Dask.dataframe 或替代方案 : Scalable way of dropping rows of low frequency items

python - 从 df.append 转换为 pd.concat 时,无法连接类型 '<class ' list'>' 的对象

python-3.x - Pandas:通过映射现有列创建新索引列