python - Pandas 用 df.apply 结果替换原始列空值
问题描述
我有以下 dataframe df
,stamp B
有时为空。必须用列中的日期Stamp A
和相应时间填充此类空值Time
stamp A stamp B Time
0 2012-10-08 18:15:05 2012-10-08 18:15:05 19:00:01
1 2012-10-09 12:15:05 NaT 18:45:09
2 2012-10-11 18:13:00 NaT 12:20:20
3 2012-10-11 08:15:15 2012-10-11 18:15:05 22:10:05
4 2012-10-12 18:15:20 2012-10-12 17:10:20 19:34:12
这是我的解决方案 -
>>>from datetime import dateime as dtm
>>>result = df[df['stamp B'].isnull()].apply(lambda x: dtm.combine(x['stamp A'].date(), dtm.strptime(x["Time"], "%H:%M:%S").time()), axis=1)
它返回result
如下:
1 2012-10-09 18:45:09
2 2012-10-11 12:20:20
dtype: datetime64[ns]
但不确定,如何result
用NaT
原始数据框中的值替换它df['stamp B']
解决方案
我会从中提取日期stamp A
,添加Time
,然后执行一个fillna
on stamp B
:
s = df['stamp A'].dt.normalized() + pd.to_timedelta(df['Time'])
df['stamp B'] = df['stamp B'].fillna(s)
推荐阅读
- node.js - 节点 HTTPS - 从 process.env 读取密码时,mac 验证失败
- git - 如何在 api v3 中获取所有 GitHub 公共存储库的 JSON?
- spring-boot - WebClient 的 bodyToMono 关于空体预期行为
- delphi - Delphi 7中的二进制到十进制
- sql - 在字段中遇到特殊字符(例如“/”)时创建新行
- apache-spark - 如何使用 SPARK 将 JPG、PDF 文件加载到 HBASE?
- amazon-web-services - AWS RDS - 每天自动创建一个“副本”数据库
- python - Python - Numpy中线和点之间的欧几里得距离
- python - 为什么 pip --version 和 pip3 --version 在同时安装 Python3.7 时默认为 Python3.6?
- python - 如何获取 lxml.etree 的父标签属性,如“KEY”、“NAME”、Python 3.6