Python 如何在该函数上迭代输入列表,从而

Python 如何在该函数上迭代输入列表,从而,python,pandas,loops,Python,Pandas,Loops,我想在下面的函数中迭代一个带有输入变量的列表,然后将输出作为csv文件返回。我有一个大的csv文件,我首先要创建一个数据帧。然后我想得到数据帧的某些部分,即某个日期前后的-10天和+10天,以及某个股票 数据框如下所示(这只是一小部分,实际上是2011-2019年期间每天所有股票行情的10万多行) 功能如下。它所做的是过滤股票代码的数据框,然后过滤日期(-10天和+10天) 我想用股票和它们各自的日期在函数上迭代列表,并获得csv格式的输出。 对于输入文件中的每一行,输出应该是20个日期 欢迎提

我想在下面的函数中迭代一个带有输入变量的列表,然后将输出作为csv文件返回。我有一个大的csv文件,我首先要创建一个数据帧。然后我想得到数据帧的某些部分,即某个日期前后的-10天和+10天,以及某个股票

数据框如下所示(这只是一小部分,实际上是2011-2019年期间每天所有股票行情的10万多行)

功能如下。它所做的是过滤股票代码的数据框,然后过滤日期(-10天和+10天)

我想用股票和它们各自的日期在函数上迭代列表,并获得csv格式的输出。 对于输入文件中的每一行,输出应该是20个日期


欢迎提供任何提示或帮助

考虑构建一个由函数生成的数据帧列表,并与一起编译。此外,不需要单独调用
到_datetime
,因为您可以在以下内容中使用
解析_dates
参数:

def获取数据(发行日期、股票代码):
df=pd.read\u csv(r'C:\Users\name\document.csv',parse\u dates=['Date'])
x=-10#设置窗口范围
y=-(x)
日期1=dt.strtime(发布日期,“%m/%d/%Y”)#根据输入匹配
日期之前=日期1+日期时间.timedelta(天=x)
之后的日期=日期1+datetime.timedelta(天=y)
cond1=df['Date']>=在日期之前

cond2=df['Date']似乎效果不错,但如果我不想将我的股票数据列表硬塞进代码中,但就像我以前想做的那样,上传一个包含两列的excel文件,第一列是股票代码,第二列是日期。然后这样做,而不是循环,
合并符号上的两个数据框,然后按日期范围过滤。
Date           Symbol   ShortExemptVolume   ShortVolume     TotalVolume
2011-01-03     AAWW     0.0                     28369           78113.0
2011-01-03     AMD      0.0                     3183556         8095093.0
2011-01-03     AMRS     0.0                     14196           18811.0
2011-01-03     ARAY     0.0                     31685           77976.0
2011-01-03     ARCC     0.0                     177208          423768.0
import pandas as pd
from datetime import datetime
import urllib
import datetime

def get_data(issue_date, stock_ticker):
    df = pd.read_csv (r'C:\Users\name\document.csv')
    df['Date'] = pd.to_datetime(df['Date'], format="%Y%m%d")

    x = -10 #set window range
    y = -(x)
    date_1 = datetime.datetime.strptime(issue_date, "%Y-%m-%d")
    before_date = pricing_date = date_1 + datetime.timedelta(days=x)       days of issue date
    after_date = date_1 + datetime.timedelta(days=y)

    cond1 = df['Date'] >= before_date
    cond2 = df['Date'] <= after_date
    cond3 = df['Symbol'] == 'stock_ticker'

    short_data = df[cond1 & cond2 & cond3]

    return [short_data]
ARAY    4/24/2014
ACET    11/16/2015
ACET    11/16/2015
AEGR    8/15/2014
ATSG    9/29/2017
def get_data(issue_date, stock_ticker):
    df = pd.read_csv (r'C:\Users\name\document.csv', parse_dates=['Date'])

    x = -10 #set window range
    y = -(x)
    date_1 = dt.strptime(issue_date, "%m/%d/%Y")        # MATCH ACCORDING TO INPUT
    before_date = date_1 + datetime.timedelta(days=x)  
    after_date = date_1 + datetime.timedelta(days=y)

    cond1 = df['Date'] >= before_date
    cond2 = df['Date'] <= after_date
    cond3 = df['Symbol'] == stock_ticker                # REMOVE SINGLE QUOTES

    short_data = df[cond1 & cond2 & cond3]

    return short_data                                   # REMOVE LIST BRACKETS

stock_date_list = [['ARAY', '4/24/2014'],
                   ['ACET', '11/16/2015'],
                   ['ACET', '11/16/2015'],
                   ['AEGR', '8/15/2014'],
                   ['ATSG', '9/29/2017']]

# LIST COMPREHENSION ITERATIVELY CALLING FUNCTION
df_list = [get_data(i[1], i[0]) for i in stock_date_list)]

# SINGLE DATA FRAME COMPILATION
final_df = pd.concat(df_list, ignore_index=True)