读取csv,保存在数据框中,放入条件,不会超出结果

时间:2019-05-31 07:33:02

标签: python pandas csv dataframe

我正在读取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文件并要打印仅符合条件的产品编号。

1 个答案:

答案 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")