首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在试着写一个"if then“语句。如果df['time']的格式为YYYY,则df['time']=df['year']。Else df['time']=df['date2']

我正在试着写一个"if then“语句。如果df['time']的格式为YYYY,则df['time']=df['year']。Else df['time']=df['date2']
EN

Stack Overflow用户
提问于 2019-09-25 04:19:19
回答 1查看 36关注 0票数 0

我正在创建一个代码,它将在几个数据集上工作。有些数据集给出了年份,有些数据集给出了月-日-年。我已经有代码来提取月份和日期到年,但是我需要写一些东西,如果它已经在YYYY格式中,我需要写一些东西来离开年份。

代码语言:javascript
复制
if df['year'] **contains four digits YYYY:
 df['year']=df['year']

else:
 df['year'] = df['monthdayyear'].astype(str).str[:10]

最终,我希望只保留YYYY格式的剩余年份

EN

回答 1

Stack Overflow用户

发布于 2019-09-25 04:30:27

我相信这就是你所要求的,如果不是,请评论并编辑你的答案,使其具有你的预期输出。

代码语言:javascript
复制
import pandas as pd
import numpy as np
a = {'year':[1990,1923,1904,'not4digits','not4digits',2001],'monthdayyear':[1990,1923,1904,20140901,20180305,2001]}
df = pd.DataFrame(a)
print(df)
df['year'] = np.where(len(df['year']) == 4, df['year'],df['monthdayyear'].astype(str).str[:10])
print(df)

应用条件前的输出:

代码语言:javascript
复制
         year  monthdayyear
0        1990          1990
1        1923          1923
2        1904          1904
3  not4digits      20140901
4  not4digits      20180305
5        2001          2001

在不满足条件的情况下应用np.where后的输出,列year中的值将替换为列monthdayyear中的值

代码语言:javascript
复制
       year  monthdayyear
0      1990          1990
1      1923          1923
2      1904          1904
3  20140901      20140901
4  20180305      20180305
5      2001          2001
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58087571

复制
相关文章

相似问题

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