读取 .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')