首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换用于循环熊猫的日期时间值

替换用于循环熊猫的日期时间值
EN

Stack Overflow用户
提问于 2017-08-03 22:09:53
回答 1查看 714关注 0票数 0

我有一个如下所示的df,但要大得多。lastDate列下有一些不正确的日期,而且只有当correctDate列中有内容时,它们才是不正确的,就在它们旁边。

代码语言:javascript
复制
dff = pd.DataFrame(
            {"lastDate":['2016-3-27', '2016-4-11', '2016-3-27', '2016-3-27', '2016-5-25', '2016-5-31'],
             "fixedDate":['2016-1-3', '', '2016-1-18', '2016-4-5', '2016-2-27', ''],
             "analyst":['John Doe', 'Brad', 'John', 'Frank', 'Claud', 'John Doe']
            })

第一个是我拥有的,第二个是循环之后我想要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-03 22:21:47

首先,将这些列转换为datetime dtype:

代码语言:javascript
复制
for col in ['fixedDate', 'lastDate']:
    df[col] = pd.to_datetime(df[col])

然后你可以用

代码语言:javascript
复制
mask = pd.notnull(df['fixedDate'])
df.loc[mask, 'lastDate'] = df['fixedDate']

例如,

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame( {"lastDate":['2016-3-27', '2016-4-11', '2016-3-27', '2016-3-27', '2016-5-25', '2016-5-31'], "fixedDate":['2016-1-3', '', '2016-1-18', '2016-4-5', '2016-2-27', ''], "analyst":['John Doe', 'Brad', 'John', 'Frank', 'Claud', 'John Doe'] })

for col in ['fixedDate', 'lastDate']:
    df[col] = pd.to_datetime(df[col])

mask = pd.notnull(df['fixedDate'])
df.loc[mask, 'lastDate'] = df['fixedDate']
print(df)

收益率

代码语言:javascript
复制
    analyst  fixedDate   lastDate
0  John Doe 2016-01-03 2016-01-03
1      Brad        NaT 2016-04-11
2      John 2016-01-18 2016-01-18
3     Frank 2016-04-05 2016-04-05
4     Claud 2016-02-27 2016-02-27
5  John Doe        NaT 2016-05-31
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45495327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档