Запись в фрейм данных или файл Excel / CSV без наложения в цикле - PullRequest
0 голосов
/ 19 июня 2020

В основном мой алгоритм создает такие строки, как:

[1 rows x 84 columns]
Date  1990-12-31  1991-09-30  1991-12-31  1992-03-31  1992-06-30  ...  2017-06-30  2018-12-31  2019-09-30  2019-12-31  2020-03-31
AEP         28.0      30.625       34.25       30.75      31.875  ...   69.470001   74.739998   93.690002   94.510002   79.980003        

[1 rows x 84 columns]
Date  1990-12-31  1991-09-30  1991-12-31  1992-03-31  1992-06-30  ...  2017-06-30  2018-12-31  2019-09-30  2019-12-31  2020-03-31        
HON     6.435244    8.639912   10.457272    12.03629   12.810903  ...  127.751709  132.119995  169.199997       177.0  133.789993        

[1 rows x 84 columns]
Date  1990-12-31  1991-09-30  1991-12-31  1992-03-31  1992-06-30  ...  2017-06-30  2018-12-31  2019-09-30  2019-12-31  2020-03-31        
BMY    15.942265   19.689886   20.998581    18.14325   15.674578  ...   55.720001       51.98   50.709999   64.190002   55.740002   

Моя проблема состоит в том, чтобы добавить эти строки вместе в один файл df или excel.

Функция, которая создает эти строки, вызывается al oop, у которого есть список тикеров. Проблема заключается в том, что каждый раз, когда я пытаюсь добавить или записать что-то в файл, он перезаписывает каждый предыдущий тикер, поэтому в итоге я получаю только варианты тикера BMY.

Это код l oop, функция - «бегущая строка»

list=["CAT","CVX","BA","AEP","HON","BMY"]
for i in list:
    ticker(i)
def ticker(tick):
df = pd.read_csv (r"C:/Users/NAME/Desktop/S&P data/Data Compilation.csv")
df1=df.set_index(["Company Ticker"])
abt=pd.read_csv(r"C:/Users/NAME/Desktop/S&P data/"+tick+"/"+tick+".csv")                                                 
abt1=abt[['Close',"Date"]]
# I tried a lot of methods to join, I manually inputted the dates I need.
# The code then appends the ticker data Close & price into a new sheet in Data Compilation
output=abt1.join(df1,how='left')
output=output[output["Date"].isin(['2020-03-31','2019-12-31','2019-09-30'   ,'2019-06-30'   ,'2019-03-31'   ,'2018-12-31'   ,'2018-09-30'   ,'2018-06-30'   ,'2018-03-31'   ,'2017-12-31'   ,'2017-09-30'   ,'2017-06-30'   ,'2017-03-31'   ,'2016-12-31'   ,'2016-09-30'   ,'2016-06-30'   ,'2016-03-31'   ,'2015-12-31'   ,'2015-09-30'   ,'2015-06-30'   ,'2015-03-31'   ,'2014-12-31'   ,'2014-09-30'   ,'2014-06-30'   ,'2014-03-31'   ,'2013-12-31'   ,'2013-09-30'   ,'2013-06-30'   ,'2013-03-31'   ,'2012-12-31'   ,'2012-09-30'   ,'2012-06-30'   ,'2012-03-31'   ,'2011-12-31'   ,'2011-09-30'   ,'2011-06-30'   ,'2011-03-31'   ,'2010-12-31'   ,'2010-09-30'   ,'2010-06-30'   ,'2010-03-31'   ,'2009-12-31'   ,'2009-09-30'   ,'2009-06-30'   ,'2009-03-31'   ,'2008-12-31'   ,'2008-09-30'   ,'2008-06-30'   ,'2008-03-31'   ,'2007-12-31'   ,'2007-09-30'   ,'2007-06-30'   ,'2007-03-31'   ,'2006-12-31'   ,'2006-09-30'   ,'2006-06-30'   ,'2006-03-31'   ,'2005-12-31'   ,'2005-09-30'   ,'2005-06-30'   ,'2005-03-31'   ,'2004-12-31'   ,'2004-09-30'   ,'2004-06-30'   ,'2004-03-31'   ,'2003-12-31'   ,'2003-09-30'   ,'2003-06-30'   ,'2003-03-31'   ,'2002-12-31'   ,'2002-09-30'   ,'2002-06-30'   ,'2002-03-31'   ,'2001-12-31'   ,'2001-09-30'   ,'2001-06-30'   ,'2001-03-31'   ,'2000-12-31'   ,'2000-09-30'   ,'2000-06-30'   ,'2000-03-31'   ,'1999-12-31'   ,'1999-09-30'   ,'1999-06-30'   ,'1999-03-31'   ,'1998-12-31'   ,'1998-09-30'   ,'1998-06-30'   ,'1998-03-31'   ,'1997-12-31'   ,'1997-09-30'   ,'1997-06-30'   ,'1997-03-31'   ,'1996-12-31'   ,'1996-09-30'   ,'1996-06-30'   ,'1996-03-31'   ,'1995-12-31'   ,'1995-09-30'   ,'1995-06-30'   ,'1995-03-31'   ,'1994-12-31'   ,'1994-09-30'   ,'1994-06-30'   ,'1994-03-31'   ,'1993-12-31'   ,'1993-09-30'   ,'1993-06-30'   ,'1993-03-31'   ,'1992-12-31'   ,'1992-09-30'   ,'1992-06-30'   ,'1992-03-31'   ,'1991-12-31'   ,'1991-09-30'   ,'1991-06-30'   ,'1991-03-31'   ,'1990-12-31'   ,'1990-09-30'   ,'1990-06-30'   ,'1990-03-31'])]
output=output.pivot_table(values='Close',columns='Date',aggfunc='first')
output=output.rename(index={"Close":tick})
print(output)
return output

1 Ответ

0 голосов
/ 19 июня 2020

Если вы хотите объединить строки в одном кадре данных с одинаковыми столбцами, приведенный ниже код может выполнить эту работу:

df = pd.DataFrame()
list=["CAT","CVX","BA","AEP","HON","BMY"]
for i in list:
    responseDf = ticker(i)
    df = df.append(responseDf)
print(df)

«df» - ваш основной кадр данных и в каждом l oop кадре данных результата из тикера добавляется к основному фрейму данных функцией "добавления".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...