读取 .csv 列并在相应字符串旁边写入 result/value?
Read .csv column and write result/value next to corresponding string?
我在 .csv 文件中有一个包含 100 个代码(“代码”列)的列表。我在“代码”列旁边有一个 blank/empty“净有形资产”列。我如何查找代码栏,并在其旁边写下“净有形资产”总额?这是我目前所拥有的,但它只做一个自动收报机。
import yfinance as yf
appl = yf.Ticker("appl")
appl.balance_sheet
df = appl.balance_sheet
df.loc['Net Tangible Assets'][0]
结果:
65339000000.0
import csv
mylist = [[], []]
with open('file.csv', 'r') as f:
reader = csv.reader(f)
mylist = list(reader)
mylist[1][1] = 65339000000.0
with open("out.csv", 'w', newline="") as out:
csv_writer = csv.writer(out)
csv_writer.writerows(mylist)
我希望输出是这样的:
Ticker,Tangible_BV
AAPL,65339000000.0
MSFT,84477000.0
AMD,5319000.0
我建议使用 pandas 而不是 csv 库。
import yfinance as yf
import pandas as pd
# Create a function that returns the latest asset
def get_latest_asset(stock_id):
stock = yf.Ticker(stock_id)
df = appl.balance_sheet
assets = df.loc['Net Tangible Assets']
latest_asset = assets[0]
return latest_asset
# Now use a simple for loop to iterate through the id's you choose
stock_ids = ['AAPL', 'MSFT', 'AMD']
latest_assets = [] # append all the assets to this list
for id in stock_ids:
latest_assets.append(get_latest_asset(id))
# Create a dataframe from the data we collected
assets_df = pd.DataFrame({'Ticker': stock_ids, 'Tangible_BV': latest_assets})
assets_df.to_csv('assets.csv')
为了便于理解,特意将此代码写得“很长”。这不是最 'elegant' 的方式。如果您正在寻找“更短”的东西,您可以使用以下代码片段(具有相同的功能):
import yfinance as yf
import pandas as pd
stock_ids = ['AAPL', 'MSFT', 'AMD']
assets = [yf.Ticker(x).balance_sheet.loc['Net Tangible Assets'][0] for x in stock_ids ]
assets_df = pd.DataFrame({'Ticker': stock_ids, 'Tangible_BV': assets})
assets_df.to_csv('assets.csv')
我在 .csv 文件中有一个包含 100 个代码(“代码”列)的列表。我在“代码”列旁边有一个 blank/empty“净有形资产”列。我如何查找代码栏,并在其旁边写下“净有形资产”总额?这是我目前所拥有的,但它只做一个自动收报机。
import yfinance as yf
appl = yf.Ticker("appl")
appl.balance_sheet
df = appl.balance_sheet
df.loc['Net Tangible Assets'][0]
结果:
65339000000.0
import csv
mylist = [[], []]
with open('file.csv', 'r') as f:
reader = csv.reader(f)
mylist = list(reader)
mylist[1][1] = 65339000000.0
with open("out.csv", 'w', newline="") as out:
csv_writer = csv.writer(out)
csv_writer.writerows(mylist)
我希望输出是这样的:
Ticker,Tangible_BV
AAPL,65339000000.0
MSFT,84477000.0
AMD,5319000.0
我建议使用 pandas 而不是 csv 库。
import yfinance as yf
import pandas as pd
# Create a function that returns the latest asset
def get_latest_asset(stock_id):
stock = yf.Ticker(stock_id)
df = appl.balance_sheet
assets = df.loc['Net Tangible Assets']
latest_asset = assets[0]
return latest_asset
# Now use a simple for loop to iterate through the id's you choose
stock_ids = ['AAPL', 'MSFT', 'AMD']
latest_assets = [] # append all the assets to this list
for id in stock_ids:
latest_assets.append(get_latest_asset(id))
# Create a dataframe from the data we collected
assets_df = pd.DataFrame({'Ticker': stock_ids, 'Tangible_BV': latest_assets})
assets_df.to_csv('assets.csv')
为了便于理解,特意将此代码写得“很长”。这不是最 'elegant' 的方式。如果您正在寻找“更短”的东西,您可以使用以下代码片段(具有相同的功能):
import yfinance as yf
import pandas as pd
stock_ids = ['AAPL', 'MSFT', 'AMD']
assets = [yf.Ticker(x).balance_sheet.loc['Net Tangible Assets'][0] for x in stock_ids ]
assets_df = pd.DataFrame({'Ticker': stock_ids, 'Tangible_BV': assets})
assets_df.to_csv('assets.csv')