在带日期的python中有条件地删除行

时间:2018-10-14 18:40:33

标签: python python-3.x pandas dataframe

我想标准化我的数据框,使其在精确的日期开始和结束,但是我找不到解决方案... 我正在处理时间序列,因此至关重要的是,我必须在同一天开始和结束所有事情。

我尝试了几段代码,包括来自stackvoerflow的代码,但没有任何效果。

现在我只想要2010年1月1日至2017年12月31日之间的行,这是我到目前为止的代码:

(base) Organic:django_project organic$

但这不会影响行数,只会删除我要求的列。

有人对如何解决此问题有任何想法吗?

在此先感谢您可以给我的任何建议!

1 个答案:

答案 0 :(得分:1)

好的,感谢@RafaelC,这是我的问题的答案。

def concatenate(indir="../Equity_Merton", outfile = "../Merged.csv"):
    os.chdir(indir)    
    fileList = glob.glob("*.csv")
    ticker = []
    main_df = pd.DataFrame()

    for filename in fileList:
        print(filename)
        df=pd.read_csv(filename, sep = ";")
        ticker.append(df)
        df["Date"] = pd.to_datetime(df['Date'])
        df = df[(df.Date <= '2017-12-31') & (df.Date >= '2010-01-01')]
        df.set_index("Date", inplace=True)     
        df.rename(columns = {"Close": filename[0:len(filename) - 4]}, inplace = True)
        df.drop(["Open","High","Low","Volume","Open interest"],axis = 1, inplace=True)

        if main_df.empty:
            main_df = df
        else:
            main_df = main_df.join(df, how='outer')

#        main_df = main_df.dropna(axis = 0, how="any")
        main_df.sort_index(axis=0, level=None, ascending=False, inplace=True, kind='quicksort', na_position='last')

    print(main_df.head())
    main_df.to_csv('Merton_Merged.csv')         
    shutil.move("Merton_Merged.csv", "../Merton_Merged.csv")

谢谢您的帮助!