-1
symbols = ["NIFTY", "ITC", "BBC", ....etc]
from tvDatafeed import TvDatafeed, Interval

tv = TvDatafeed()

tv = TvDatafeed(username, password, chromedriver_path=None)

tv = TvDatafeed(auto_login=true)

nifty_data = tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1)

print(nifty_index_data)
#result will be like this in pandas>>>>>>>
datetime symbol open high low close volume
2023-07-20 08:45:00 NSE:NIFTY 19943.15 19991.85 19935.45 19987.05 60215122.0

There is around 1060 stocks/symbols and we have to run script again-again to scrap different data for different symbols like this >>>

# nifty
nifty_data = tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1)

# ITC
ITC_data = tv.get_hist(symbol='ITC',exchange='NSE',interval=Interval.in_1_hour,n_bars=1)


# RELIANCE
RELIANCE_data = tv.get_hist(symbol='RELIANC',exchange='NSE',interval=Interval.in_1_hour,n_bars=1)

print(nifty_data)
print(ITC_data)
print(RELIANCE_data)

#this will return 3 different tables

#i need data in 1 datafame 

I need all symbol data in one data frame like this>>>

datetime symbol open high low close volume
2023-07-20 03:45:00 NSE:BORORENEW 474.50 485.00 473.45 483.75 89517.0
2023-07-20 03:45:00 NSE:NIFTY 19841.15 19844.00 19784.55 19813.35 19934954.0

AND I ALSO DONT WAN'T TO RUN SCRIPT AGAIN-AGAIN BY CHANGING SYMBOL NAME

PLESE HELP THIS IS MY FIRST INTERVIEW PRESENTATION

**LIBARRY THAT I USED>>>TVDATAFEED **

  • 1
    Does this answer your question? [How do I combine two dataframes?](https://stackoverflow.com/questions/12850345/how-do-i-combine-two-dataframes) – JonSG Jul 20 '23 at 12:13
  • I dont see support for more than one symbol in that api, but the git repo seems easy enough to follow if you wanted to fork it. – JonSG Jul 20 '23 at 12:17
  • 1
    @JonSG Congrats for 10k rep:) – Talha Tayyab Jul 20 '23 at 12:21

1 Answers1

1

Something like this should work:

import pandas as pd

symbols = ["NIFTY", "ITC", "RELIANC"]

result = pd.concat([tv.get_hist(symbol=symbol,exchange='NSE',interval=Interval.in_1_hour,n_bars=1) for symbol in symbols])
luca
  • 126
  • 6