我有几个CSV文件需要使用panda在python3中读取。我试图找到每个CSV的哪一列(或索引)包含有日期的列。两个问题: 我已经开始使用类似这样的panda对它们进行迭代,并且我可以使用datetime解析函数快速识别列中是否包含日期。我很难一列一列地(通过每个标题来检查“日期”之类的词),也很难通过那一列中的每一行来查看是否可以将它解析为一个日期。想法吗? 例如CSV:
Table
DATE ,TOPIC
Aug 21 ,"Some text here"
Aug 23 ,Some other text here, it isn't always in quotes
当前的代码迭代通过行:
import pandas as pd
df = pd.read_csv(filePath)
for i, row in enumerate(df.itertuples(), 0):
print(i, row.Index)
编辑: 下面是我当前的代码,用于遍历文件索引列中的每一行。当日期在索引中时,这是有效的,但是我需要遍历每一列(不仅仅是索引)来查看哪一列包含日期。
for i, row in enumerate(df.itertuples(), 0):
for keyword in dateKeywords:
if keyword.lower() in row.Index.lower():
foundColumn = True
if foundColumn:
for days in dayAndMonthList:
if days in row.Index:
canParse = is_date(row.Index)
print(canParse)
上面的代码循环遍历Dataframe,并查找“date”或“week”之类的关键字,以查看潜在的日期列。如果它找到了一个,那么它将检查该列中的行是否都包含一个月的名称(或缩写)。这可以解析索引列中的日期,但是如何才能使它转换并测试每个列的关键字,然后遍历该列中的行以检查它们是否可解析呢? 问题来源StackOverflow 地址:/questions/59379781/how-to-iterate-over-columns-in-csv-to-find-which-one-contains-rows-of-dates-in-p
检索索引/列对,其中引用的单元格包含数据流中的日期:
# random setup
import pandas as pd
from dateutil.parser import parse
df = pd.DataFrame({
"DATE": ['15/05/1965', '02/15/1994', 'Aug 23'],
"MIX": ['ABC', 'DEF', '02/05/1995'],
"TRICKERY": ['some chars', 'obfuscating 12/12/2000 the date', 'more chars'],
"NAT": ['not', 'at', 'all']
})
# solution
def get_date(s):
try:
parse(s, fuzzy=True)
return True
except ValueError:
return False
# get a boolean dataframe with True values indicating a cell is a date
df = df.applymap(get_date)
# get a list of tuples containing an index and a column name
parsable = df[df].stack().index.tolist()
>>> df
DATE MIX NAT TRICKERY
0 True False False False
1 True False False True
2 True True False False
>>> parsable
[(0, 'DATE'), (1, 'DATE'), (1, 'TRICKERY'), (2, 'DATE'), (2, 'MIX')]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。