首页 > 解决方案 > Pandas 过滤到特定行,然后合并 2 列

问题描述

我有一个带有 create_date 和 create_time 的数据框。Create_date 是一个日期,create_time 是一个日期时间。

出于某种原因,将来会有一些 create_times,但 create_date 看起来仍然准确。

例如创建日期:2019-03-29

创建时间:2035-02-26 18:29:59

我想过滤到我感兴趣的行:

df.loc[df['create_time'] >= '2019-09-23','create_time']

然后我想梳理下面的两列

pd.to_datetime(df['create_date'].astype(str) + ' ' + df['create_time'].dt.time.astype(str))

有没有一种简单的方法来做这样的事情:

df.loc[df['create_time'] >= '2019-09-23','create_time'] = pd.to_datetime(df['create_date'].astype(str) + ' ' + df['create_time'].dt.time.astype(str))

上面语句的问题是右边没有应用过滤器

我得到的错误是针对应该从选择中排除的行。我无法将查询应用于整个数据帧,因为某些 create_times 是 NaT。

标签: pythonpandas

解决方案


你可以试试mask

con1=df['create_time'] >= '2019-09-23'
v1=pd.to_datetime(df['create_date'].astype(str) + ' ' + df['create_time'].dt.time.astype(str))
df.create_time=df.create_time.mask(con1,v1)

推荐阅读