我正在用python做我的第一个项目,我试图让一列成为一行。
我无权访问好的数据,因此我改用了这个数据:https://www.quandl.com/product/WIKIP/WIKI/PRICES-Quandl-End-Of-Day-Stocks-Info)
我做了什么:
os.chdir('path')
df = pd.read_csv('WIKI_PRICES_212b326a081eacca455e13140d7bb9db.csv',usecols=['ticker','date','close','volume'])
df.index = df.date
del df['date']
我的df看起来像这样:
index ticker close
1999-11-18 A 44
1999-11-19 A 40,4
..... .... ....
2005-12-20 AA 33
..... Z 37
2003-5-20 Z 51
就像1500万行一样。我想要
Index A AA ..... ZZZ
1999-11-18 44 .... price
1999-11-19 40,4 .... price
编辑:以下部分不是“漂亮”但它有效,如果您有任何改进想法,我想阅读它。
#format date python
df.date = pd.to_datetime(df.date)
del df['volume']
#my columns stocks in a new df
df2 = df['ticker']
#to have theim only one time (3193 stocks)
df2 = list(set(df2))
df3 = pd.DataFrame(np.array(df2).reshape(3193,1))
df3.columns = ['Stocks']
#now i create a dates times index big enough
dates = pd.date_range('1975-01', '2017-08', freq='d')
#.T
df4 = df3.set_index('Stocks').T
#a dataframe with stock as column et date as index
df5 = pd.DataFrame(pd.np.empty((15554, 3193)))
df5.index = dates
df5.columns = df2
现在我的第一个df价格全部,我想拿价格并在我的df5中使用theim(空的一个以股票名称作为列,日期作为索引)。
拥有类似的东西(不是真实的数字)
dates A AA .... ZZZ
1975-01 nan nan ... nan
.... 100 3 ... nan
2017-08 nan 5 ... 12
答案 0 :(得分:0)
尝试
new_df = df.set_index(['index', 'ticker']).close.unstack()
或者
new_df = df.pivot('index', 'ticker', 'close')
你得到了
ticker A AA
index
1999-11-18 44 None
1999-11-19 40,4 None
2005-12-20 None 33