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

2024-09-24 02:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想标准化我的数据帧使其开始和结束在一个准确的日期,但我找不到解决方案。。。 我正在处理一个时间序列,所以至关重要的是我有一切开始和结束在同一天

我已经尝试了几段代码,包括来自stackvoerflow的代码,但都不起作用

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

df=pd.read_csv("AREX.csv", sep = ";")
df[~df['Date'].isin(pd.date_range(start='20100101', end='20171231'))]        
print(df)
df.drop(["Open","High","Low","Volume","Open interest"],axis = 1, inplace=True)
print(df)

但它不影响行数,它只删除我请求它访问的列

有人知道怎么解决这个问题吗

提前谢谢你给我的任何建议


Tags: csv数据代码dfreaddate时间序列
1条回答
网友
1楼 · 发布于 2024-09-24 02:23:14

好的,感谢@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")

谢谢你的帮助

相关问题 更多 >