【发布时间】:2020-02-18 23:33:30
【问题描述】:
好的,所以我在 Pandas 表中有一个列,该列是从我试图通过的 CSV 文件创建的,并检查每个单元格是否是日期。他们中的大多数是,但有一些例外我想从列中丢弃。我可以使用 dateutil 工具和从另一个论坛获取的以下代码来插入单个单元格并检查它是否是日期:
from dateutil.parser import parse
def is_date(string, fuzzy = False):
try:
parse(string, fuzzy = fuzzy)
return True
except ValueError:
return False
print(is_date(df.loc[0, 'Column_Name']))
当我运行代码时,这将返回“True”。我想要做的是使用 try 循环检查列中的每个单元格,如果值为“False”,则完全删除该行。我是编码新手,循环部分有问题。感谢您的帮助!
编辑: 首先是月,然后是日。我现在可以看到,这不是格式的最佳示例,但这并不重要,因为所有日期条目都将采用相同的格式。某些单元格将是其他内容,例如我要排除的用户评论。但是,我能够找到一种方法来遍历列并打印日期时间格式的字符串(如果它是日期)并传递非日期字符串:
def is_date(date_str, fuzzy = False):
try:
parse(date_str, fuzzy = fuzzy)
return date_str
except ValueError:
pass
i = 0
while i < len(df['Column_Name']):
date_group = is_date(str(df.loc[i, 'Column_Name']))
try:
date_change = datetime.datetime.strptime(date_group, '%m/%d/%y').date()
print(date_change)
except:
pass
i = i + 1
现在我需要写入一个新列,如果 T 则写入日期,如果 F 从新列中排除
【问题讨论】:
-
那么一行的每一列都是一个日期?还是只有第一列是日期?
-
你能举一个有效/无效数据的例子吗?有没有可以被利用的模式?
-
所以,大多数列都是日期,但也有一些不是。一个有效输入的例子是 "02/02/2020" ,它返回 "True",而无效是其他任何东西,它返回 "False"。
-
为了确保我正确理解这一点,所有有效日期都采用
"02/02/2020"格式?那一天是第一天还是第一个月? -
我编辑了我原来的帖子来回答你的问题。我无法像在原始帖子中那样以代码格式给出答案,因此不容易阅读。 womp womp