我正在读取csv,将其保存到数据帧中并使用if条件,但没有得到预期的结果。
下面的我的python代码:
import pandas as pd
import numpy as np
import datetime
import operator
from datetime import datetime
dt = datetime.now ( ).strftime ( '%m/%d/%Y' )
stockRules = pd.read_csv("C:\stock_rules.csv", dtype={"Product Currently Out of Stock": str}).drop_duplicates(subset="Product Currently Out of Stock", keep="last" )
pd.to_datetime(stockRules['FROMMONTH'], format='%m/%d/%Y')
pd.to_datetime(stockRules['TOMONTH'], format='%m/%d/%Y')
if stockRules['FROMMONTH'] <= dt and stockRules['TOMONTH'] >= dt:
print(stockRules)
我的csv文件在下面:
Productno FROMMONTH TOMONTH
120041 2/1/2019 5/30/2019
112940 2/1/2019 5/30/2019
121700 2/1/2019 2/1/2019
我要读取csv文件并要打印仅符合条件的产品编号。
答案 0 :(得分:0)
我对代码进行了一些尝试,并对其进行了一些简化,但是选择背后的想法仍应相同:
dt = datetime.now().strftime("%m/%d/%Y")
stockRules = pd.read_csv("data.csv", delimiter=";")
stockRules["FROMMONTH"] = pd.to_datetime(stockRules["FROMMONTH"], format="%m/%d/%Y")
stockRules["TOMONTH"] = pd.to_datetime(stockRules["TOMONTH"], format="%m/%d/%Y")
sub = stockRules[(stockRules["FROMMONTH"] <= dt) & (dt <= stockRules["TOMONTH"])]
print(sub["Productno"])
请注意,使用pd.to_datetime
时,我会将运算结果分配给原始列,并覆盖之前的内容。
希望这会有所帮助。
编辑:
为了测试,我更改了CSV的使用方式;作为定界符,因为我无法读取问题中提供的数据。可能是您必须指定另一个定界符。对于标签,例如:
stockRules = pd.read_csv("data.csv", delimiter="\t")