Как выбрать строки из текстового файла по границам дат в pandas? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть этот входной файл: temp2.txt:

82.0    1   77  918     12/04/13        
47.0    1   77  9399    19/06/13        
39.0    1   77  4522    07/07/14        
52.0    1   77  504     13/05/14    

Я хочу скопировать только строки с датами между a и b из temp2.txt в output_file.txt

Я написал этот код:

import pandas as pd

    a = "01/01/2013"
    b = "31/12/2013"

    df = pd.read_csv('temp2.txt', header=None, sep='\s+')
    df['tmp'] = pd.to_datetime(df[4], errors='coerce')

    df['tmp'] = df['tmp'].between(a, b, inclusive=True)

    df.drop('tmp', axis=1, inplace=True)
    df.to_csv('output_file.txt', header=False, index=False, sep='\t')

Но мне кажется, что он не работает, я получаю все строки вместо двух, которые я хочу. Что я тут не так делаю?

1 Ответ

1 голос
/ 06 марта 2020

Пожалуйста, замените df.drop('tmp', axis=1, inplace=True) на это.

df = df.loc[df['tmp']]

Итак, весь код:

import pandas as pd

a = "01/01/2013"
b = "31/12/2013"

df = pd.read_csv('temp2.txt', header=None, sep='\s+')
df['tmp'] = pd.to_datetime(df[4], errors='coerce')

df['tmp'] = df['tmp'].between(a, b, inclusive=True)

df = df.loc[df['tmp']]
df.to_csv('output_file.txt', header=False, index=False, sep='\t')
...