Чтение CSV, сохранение в dataframe, постановка условия if, не получение ожидаемого результата - PullRequest
0 голосов
/ 31 мая 2019

Я читаю csv, сохраняю его в dataframe и использую условие 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 голосов
/ 31 мая 2019

Я немного поигрался с кодом и несколько упростил его, но идея выделения должна работать так же:

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...