首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向month和date列添加零时出错

向month和date列添加零时出错
EN

Stack Overflow用户
提问于 2020-06-17 17:29:23
回答 2查看 68关注 0票数 0

我的日期列值为2020-6-10、2020-6-9等等。如果月份或日期中的数字小于10,我需要添加零。我尝试了以下代码,但遇到错误。有人能告诉我我得到它了吗?有没有更好的方法。我需要更改Date列中的值。

代码语言:javascript
复制
for x in df['Date']:
    y,m,d = x.split('-')
    m = m.zfill(2)       
    d = d.zfill(2)
    x = y + "-" + m + "-" + d 

错误=解包的值不足(预期为% 3,实际为% 1)

EN

回答 2

Stack Overflow用户

发布于 2020-06-17 17:38:32

这个错误是说拆分函数没有给出您期望的三个值:年、月和日。如果x的输入值不是您期望的值,那么什么都不会起作用。

我怀疑您列中的某个值的格式不是您期望的y-m-d。或者更准确地说,它有不到3个值被“-”分割。

将拆分函数包装在try except中,并打印出该值,以查看x的哪个值正在中断。

代码语言:javascript
复制
try:
  y,m,d = x.split('-')
except ValueError:
  print(“This input does not split: %s”, x)

一旦我们确定了输入,我们就可以想出一种方法来获得你需要的输出。

票数 1
EN

Stack Overflow用户

发布于 2020-06-17 17:39:47

当您尝试拆分第二行的字符串输入时,就会出现错误。它可以很容易地以这种方式重现:

代码语言:javascript
复制
>>> y,m,d='aaaaaa'.split('-')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 1)

您将需要添加try-catch块来捕获那些不表示有效日期的输入。例如:

代码语言:javascript
复制
>>> try:
...     y,m,d='aaaaaa'.split('-')
... except ValueError:
...     return ''

您还可以在调用这些语句之前对Pandas数据帧进行一些预处理:

代码语言:javascript
复制
>>> df.dropna(subset=['Date'], inplace=True)

您还可以使用占位符填充缺少的值:

代码语言:javascript
复制
>>> df['Date'].replace('', '01-01-2020', inplace=True)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62425803

复制
相关文章

相似问题

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