gpt4 book ai didi

python - 根据列表添加新列并按最新排序日期

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:51 25 4
gpt4 key购买 nike

我是使用 python 编写代码的初学者。

我使用 Pandas 和他的 DataReader 编写了这个简单的脚本来从雅虎财经检索多个股票结果:

import pandas as pd
from pandas.io.data import DataReader
from pandas import DataFrame

symbols_list = ['AAPL', 'TSLA', 'YHOO','GOOG', 'MSFT','GILD']

for ticker in symbols_list:
r = DataReader(ticker, "yahoo", '2015-01-20')
cell= r[['Open','High','Low','Adj Close','Volume']]

print cell

使用此代码,我获得了带有日期的股票价格 + 我在“cell= r[[...”中指定的其他列,如下所示:

                      Open    High     Low  Adj Close    Volume
Date
2015-01-20 107.84 108.97 106.50 108.72 49899900
2015-01-21 108.95 111.06 108.27 109.55 48575900
2015-01-22 110.26 112.47 109.72 112.40 53796400
2015-01-23 112.30 113.75 111.53 112.98 46464800
2015-01-26 113.74 114.36 112.80 113.10 55375900
Open High Low Adj Close Volume
Date
2015-01-20 193.87 194.12 187.04 191.93 4489400
2015-01-21 189.55 198.68 189.51 196.57 4144000
2015-01-22 197.00 203.24 195.20 201.62 4094100
2015-01-23 200.29 203.50 198.33 201.29 3438600
2015-01-26 201.83 208.62 201.05 206.55 3224500

我的问题是:如何在列中包含我在 symbol_list 中指定的代码?最后一件事:我怎样才能颠倒日期的顺序?我希望它首先显示最新的(在我的示例中为 2015-01-26)。下面我向您展示了我想要获得的示例(第一列的代码名称和倒置的日期顺序)

  TSLA 2015-01-26 201.83 208.62 201.05 206.55 3224500
TSLA 2015-01-23 200.29 203.50 198.33 201.29 3438600
TSLA 2015-01-22 197.00 203.24 195.20 201.62 4094100
TSLA,2015-01-21 189.55 198.68 189.51 196.57 4144000
TSLA 2015-01-20 193.87 194.12 187.04 191.93 4489400

AAPL 2015-01-26 113.74 114.36 112.80 113.10 55375900
AAPL 2015-01-23 112.30 113.75 111.53 112.98 46464800
AAPL 2015-01-22 110.26 112.47 109.72 112.40 53796400
AAPL 2015-01-21 108.95 111.06 108.27 109.55 48575900
AAPL 2015-01-20 107.84 108.97 106.50 108.72 49899900

我尝试了一些在论坛上创建的东西,但都没有给我任何结果。谢谢大家的考虑,希望有人能帮我解决这两个问题。

最佳答案

代码更新完成

在@EdChum 的宝贵帮助下,我已经完成了我的代码,并且完全满足了我在这篇文章中的要求(再次感谢您的大力帮助)。获取多个股票价格的最终代码,一组列+代码,以及反转日期(和代码)的顺序,如下所示:

import datetime
import pandas as pd
from pandas import DataFrame
from pandas.io.data import DataReader
symbols_list = ['AAPL', 'TSLA', 'YHOO','GOOG', 'MSFT','ALTR','WDC','KLAC']

symbols=[]
for ticker in symbols_list:
r = DataReader(ticker, "yahoo",
start=datetime.datetime(2014, 12, 30))
# add a symbol column
r['Symbol'] = ticker
symbols.append(r)
# concatenate all the dfs
df = pd.concat(symbols)
#define cell with the columns that i need
cell= df[['Symbol','Open','High','Low','Adj Close','Volume']]
#changing sort of Symbol (ascending) and Date(descending) setting Symbol as first column and changing date format
cell.reset_index().sort(['Symbol', 'Date'], ascending=[1,0]).set_index('Symbol').to_csv('stock.csv', date_format='%d/%m/%Y')

希望这段代码能帮助到其他用户。

关于python - 根据列表添加新列并按最新排序日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28174193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com