python - 在 python pandas 中创建新的日期列
问题描述
我正在尝试根据数据框中的现有日期列创建一个新的日期列。我想获取第一列中的所有日期,并将它们设为第二列中的每月第一天,因此:
2019 年 3 月 15 日 = 2019 年 3 月 1 日
我知道我可以这样做:
df['newcolumn'] = pd.to_datetime(df['oldcolumn'], format='%Y-%m-%d').apply(lambda dt: dt.replace(day=1)).dt.date
我的问题是旧列中的某些数据不是有效日期。某些行中有一些文本数据。所以,我试图弄清楚如何在我这样做之前清理数据:
如果 oldcolumn 不是日期,则将其设为 01/01/1990 否则 oldcolumn
或者,有没有办法用 try/except 做到这一点?
任何援助将不胜感激。
解决方案
首先我们生成一些样本数据:
df = pd.DataFrame([['2019-01-03'], ['asdf'], ['2019-11-10']], columns=['Date'])
这可以安全地转换为datetime
df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
mask = df['Date'].isnull()
df.loc[mask, 'Date'] = dt.datetime(1990, 1, 1)
现在你不需要慢apply
df['New'] = df['Date'] + pd.offsets.MonthBegin(-1)
推荐阅读
- php - 每次在字符串中出现标签时执行一个函数
- javascript - 在javascript中将“then.catch”嵌套在另一个“then”中可以得到什么结果?
- database - 配方数据库设计
- javascript - 如何连接从 JSON 获取内容的导航栏到 jquery 并使用按钮作为切换
- php - 无法从未加载图像的数据库中检索 blob 文件
- python - 如何在 Pandas DataFrame 中获取某一列的最小值的行?
- reactjs - 在 MobX 操作中发出 HTTP 请求后无法访问它
- wordpress - 在 Linux 上的 Azure Wordpress 上通过 IP 地址限制对 wp-admin 和 wp-login.php 的访问
- c - 如何在 Join Five 游戏中找到所有可能的 5 点对齐
- malware - 什么是一 .tabufa 文件?