Мне нужно удалить большинство компаний из исторических данных фондового рынка в формате CSV. Единственные компании, которые я хочу сохранить, это «GOOG», «AAPL», «AMZN», «NFLX». Обратите внимание, что в CSV перечислены более 20 000 компаний. Я также хочу отфильтровать эти компании, используя только определенные столбцы в CSV. Столбцы: «тикер», «дата», «активы», «eps», «pe», «цена», «доход».
Код для фильтрации этих компаний:
list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']
for tickers in list:
df1 = df[df.ticker == tickers]
df1.to_csv("20CompanyAnalysisData1.csv", mode='a', header=False)
continue
Этот код успешно может записывать в новый CSV только те столбцы, которые мне нужны, и перечислять только данные компаний, которые мне нужны.
Проблема: новый CSV не печатается с именами столбцов, что делает его действительно запутанным, чтобы идти и перечислять их вручную, особенно когда я буду добавлять больше столбцов данных.
Пример CSV, из которого я читаю (со столбцами данных):
ticker,dimension,calendardate,datekey,reportperiod,lastupdated,accoci,assets,assetsavg,assetsc,assetsnc,assetturnover,bvps,capex,cashneq,cashnequsd,cor,consolinc,currentratio,de,debt,debtc,debtnc,debtusd,deferredrev,depamor,deposits,divyield,dps,ebit,ebitda,ebitdamargin,ebitdausd,ebitusd,ebt,eps,epsdil,epsusd,equity,equityavg,equityusd,ev,evebit,evebitda,fcf,fcfps,fxusd,gp,grossmargin,intangibles,intexp,invcap,invcapavg,inventory,investments,investmentsc,investmentsnc,liabilities,liabilitiesc,liabilitiesnc,marketcap,ncf,ncfbus,ncfcommon,ncfdebt,ncfdiv,ncff,ncfi,ncfinv,ncfo,ncfx,netinc,netinccmn,netinccmnusd,netincdis,netincnci,netmargin,opex,opinc,payables,payoutratio,pb,pe,pe1,ppnenet,prefdivis,price,ps,ps1,receivables,retearn,revenue,revenueusd,rnd,roa,roe,roic,ros,sbcomp,sgna,sharefactor,sharesbas,shareswa,shareswadil,sps,tangibles,taxassets,taxexp,taxliabilities,tbvps,workingcapital
A,ARQ,1999-12-31,2000-03-15,2000-01-31,2020-09-01,53000000,7107000000,,4982000000,2125000000,,10.219,-30000000,1368000000,1368000000,1160000000,131000000,2.41,0.584,665000000,111000000,554000000,665000000,281000000,96000000,0,0.0,0.0,202000000,298000000,0.133,298000000,202000000,202000000,0.3,0.3,0.3,4486000000,,4486000000,50960600000,,,354000000,0.806,1.0,1086000000,0.484,0,0,4337000000,,1567000000,42000000,42000000,0,2621000000,2067000000,554000000,51663600000,1368000000,-160000000,2068000000,111000000,0,1192000000,-208000000,-42000000,384000000,0,131000000,131000000,131000000,0,0,0.058,915000000,171000000,635000000,0.0,11.517,,,1408000000,0,114.3,,,1445000000,131000000,2246000000,2246000000,290000000,,,,,0,625000000,1.0,452000000,439000000,440000000,5.116,7107000000,0,71000000,113000000,16.189,2915000000
A,ARQ,2000-03-31,2000-06-12,2000-04-30,2020-09-01,-4000000,7321000000,,5057000000,2264000000,,10.27,-95000000,978000000,978000000,1261000000,166000000,2.313,0.577,98000000,98000000,0,98000000,329000000,103000000,0,0.0,0.0,256000000,359000000,0.144,359000000,256000000,256000000,0.37,0.36,0.37,4642000000,,4642000000,28969949822,,,-133000000,-0.294,1.0,1224000000,0.493,0,0,4255000000,,1622000000,0,0,0,2679000000,2186000000,493000000,29849949822,-390000000,-326000000,2000000,-13000000,0,-11000000,-341000000,95000000,-38000000,0,166000000,166000000,166000000,0,0,0.067,1010000000,214000000,572000000,0.0,6.43,,,1453000000,0,66.0,,,1826000000,297000000,2485000000,2485000000,296000000,,,,,0,714000000,1.0,452271967,452000000,457000000,5.498,7321000000,0,90000000,192000000,16.197,2871000000
Затем код отображается в новом CSV-файле следующим образом:
4290,AAPL,1998-02-09,4126000000.0,0.003,,0.171,1578000000.0
4291,AAPL,1998-05-11,3963000000.0,0.004,,0.276,1405000000.0
4292,AAPL,1998-08-10,4041000000.0,0.006999999999999999,,0.33899999999999997,1402000000.0
Затем мне нужно войти и вручную добавить заголовки столбцов, чтобы окончательный CSV (отредактированный мной) выглядел так:
index,ticker,datekey,assets,eps,pe,price,revenue
4289,AAPL,1997-12-05,4233000000.0,,-1.9380000000000002,0.141,
4290,AAPL,1998-02-09,4126000000.0,0.003,,0.171,1578000000.0
4291,AAPL,1998-05-11,3963000000.0,0.004,,0.276,1405000000.0
Как я могу заставить это работать, когда у меня есть сотни категорий данных, которые я использую, и я не могу вводить их вручную?
list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']
first = True
for tickers in list:
df1 = df[df.ticker == tickers]
if first:
df1.to_csv("20CompanyAnalysisData1.csv", mode='a', header=True)
first = False
else:
df1.to_csv("20CompanyAnalysisData1.csv", mode='a', header=False)
continue
или более компактно
list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']
needheader = True
for tickers in list:
df1 = df[df.ticker == tickers]
df1.to_csv("20CompanyAnalysisData1.csv", mode='a', header=neadheader)
needheader = False
continue
Назначьте имена столбцов перед сохранением файла (и удалите заголовок = False), как показано ниже:
list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']
for tickers in list:
df1 = df[df.ticker == tickers]
df1.columns=['index','ticker','datekey','assets','eps','pe','price','revenue']
df1.to_csv("20CompanyAnalysisData1.csv", mode='a')
continue
Почему вы используете
header=False
. Скорее всего, это причина, по которой имена ваших столбцов не печатаются.