【问题标题】:Comparing dates in an Excel sheet to a certain fixed date and printing a value将 Excel 工作表中的日期与某个固定日期进行比较并打印一个值
【发布时间】:2019-12-29 11:57:46
【问题描述】:

我正在尝试将 Excel 工作表中的日期与某个静态日期(如 2019 年 6 月 30 日)进行比较,如果 Excel 工作表中的日期在此之前,则打印“Y”,否则打印“N”。

我是 Pandas 的新手。

我尝试过导入文件,但不知道如何遍历每一行以及如何将日期与静态日期进行比较

import pandas as pd
import numpy as np
from datetime import date
from pandas import ExcelWriter

df = pd.read_excel(r'Date compare.xlsx', sheet_name= 'Sheet1')
df{"Date"} = pd.to_date(df["Date"],format="%d%m%Y")
pd.to_date(df["End Date"],format="%m%d%Y")

【问题讨论】:

    标签: python excel pandas date


    【解决方案1】:

    假设您在 Excel 工作表中的“日期”列被格式化为日期,您可以通过将日期列与您需要的时间戳进行比较来引入新列 FLAG。

    import pandas as pd
    
    df = pd.read_excel(r'Date compare.xlsx', sheet_name='Sheet1')
    
    df["FLAG"] = pd.np.where(df["Date"] > pd.Timestamp("2019-06-30"), "Y", "N")
    

    【讨论】:

    • 这是np.where,而不是pd.np.where
    • @CodeDifferent numpy 是在 pandas 内部导入的,因此您可以节省一些时间将 np 引用为 pd.np 而无需直接导入它。
    • 我不会依赖这种行为。对我来说听起来像是一个黑客,但对每个人来说都是他自己的
    • 这非常好用,而且很容易,谢谢你,好心的先生!
    【解决方案2】:

    在使用parse_dates=True 读取exel 文件时,我首先要确保日期被识别为Timestamp。然后您可以比较从时间戳转换为datetime.date.date() 并使用datetime.date(2019, 6, 30) 定义您的阈值日期。为此,您可以定义一个函数并将apply 用于日期 列:

    import datetime
    import pandas as pd
    
    # Import data and define threshold date
    df=pd.read_excel(r'Date compare.xlsx', parse_dates=True, sheet_name= 'Sheet1')
    mydate = datetime.date(2019, 6, 30)
    
    # Define function
    def compare(date):
        if date.date() >= mydate:
            val = "N"
        else:
            val = "Y"
        return val
    
    # Apply to all elements
    df["check"] = df['Date'].apply(compare)
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多