我的日期列值为2020-6-10、2020-6-9等等。如果月份或日期中的数字小于10,我需要添加零。我尝试了以下代码,但遇到错误。有人能告诉我我得到它了吗?有没有更好的方法。我需要更改Date列中的值。
for x in df['Date']:
y,m,d = x.split('-')
m = m.zfill(2)
d = d.zfill(2)
x = y + "-" + m + "-" + d 错误=解包的值不足(预期为% 3,实际为% 1)
发布于 2020-06-17 17:38:32
这个错误是说拆分函数没有给出您期望的三个值:年、月和日。如果x的输入值不是您期望的值,那么什么都不会起作用。
我怀疑您列中的某个值的格式不是您期望的y-m-d。或者更准确地说,它有不到3个值被“-”分割。
将拆分函数包装在try except中,并打印出该值,以查看x的哪个值正在中断。
try:
y,m,d = x.split('-')
except ValueError:
print(“This input does not split: %s”, x)一旦我们确定了输入,我们就可以想出一种方法来获得你需要的输出。
发布于 2020-06-17 17:39:47
当您尝试拆分第二行的字符串输入时,就会出现错误。它可以很容易地以这种方式重现:
>>> 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块来捕获那些不表示有效日期的输入。例如:
>>> try:
... y,m,d='aaaaaa'.split('-')
... except ValueError:
... return ''您还可以在调用这些语句之前对Pandas数据帧进行一些预处理:
>>> df.dropna(subset=['Date'], inplace=True)您还可以使用占位符填充缺少的值:
>>> df['Date'].replace('', '01-01-2020', inplace=True)https://stackoverflow.com/questions/62425803
复制相似问题