如何使用 python 将 "printed list" 更改为数据框

How to change "printed list" into dataframe with python

我想将我的“打印列表”转换为 dtaframe:

1st:我从文件夹中导入 tickers/symbols 的提升 将 yfinance 导入为 yf

with open("/Users/AB/OD/Earnings/tickers.txt") as fh:
    tick1 = fh.read().split()

(这里是保存在 txt 文件中的代码示例: 'ABCL', 'ABST', 'ACM', 'ADAP', 'ADCT', 'ADV' )

2nd:我需要获取所有这些代码的 marketCap,但是我不知道如何将其转换为一个大数据框:headers:'ticker'; 'marketCap'.

这是我可以获得的代码,但不确定如何进行:

import pandas as pd
from pandas_datareader import data as pdr
import yfinance as yf

test = tick1

for ticker in test:
    try:
        marketCap = pdr.get_quote_yahoo(ticker)['marketCap']
        print(marketCap)
    except:
        pass

如果市值不可用,我们可以跳过它。我们不需要将它们放入数据框中。

  1. 在循环之前你可以创建列表。
  2. 您可以在内部循环中附加到此列表
  3. 在循环之后你可以将这个列表转换为 DataFrame

转换取决于您在 marketCap 中获得的数据类型 - pandas.DataFramepandas.Serieslistdictionary.

在您的代码中需要 pandas.concat(some_list)

import pandas as pd
from pandas_datareader import data as pdr
import yfinance as yf

test = ['ABCL', 'ABST', 'ACM', 'ADAP', 'ADCT', 'ADV']

# --- before loop ---

data = []

# --- loop ---

for ticker in test:
    try:
        marketCap = pdr.get_quote_yahoo(ticker)['marketCap']
        print(marketCap)
        data.append(marketCap)
    except Exception as ex:
        print('skip:', ticker, ex)

# --- after loop ---

serie = pd.concat(data)
df = pd.DataFrame(serie)

print(df)

结果:

       marketCap
ABCL  1870047360
ABST   346576800
ACM   9633939456
ADAP   246278048
ADCT   641943744
ADV   1593755008