Python 如何在空单元格中填充数据框内容NA值?
我有一个数据帧df:Python 如何在空单元格中填充数据框内容NA值?,python,pandas,dataframe,multiple-columns,nan,Python,Pandas,Dataframe,Multiple Columns,Nan,我有一个数据帧df: Open Volume Adj Close Ticker Date 2006-11-22 140.750000 45505300 114.480649 SPY 我想将df更改为另一个dataframe开放价格,如下所示: SPY
Open Volume Adj Close Ticker
Date
2006-11-22 140.750000 45505300 114.480649 SPY
我想将df更改为另一个dataframe开放价格,如下所示:
SPY AGG
Date
2006-11-22 140.750000 NA
它只使用open的数据和两个ticker,那么如何将一个数据帧更改为另一个数据帧呢?我认为您可以使用
数据帧
构造函数和ticker
列表:
L = ['SPY','AGG']
df1 = pd.DataFrame({'SPY': [df.Open.iloc[0]]},
index=[df.index[0]])
df1 = df1.reindex(columns=L)
print (df1)
SPY AGG
2006-11-22 140.75 NaN
您可以使用查找<代码>股票的列表
:
df2 = pd.read_html('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies', header=0)[0]
#print (df2)
#filter only Ticker symbols starts with SP
df2 = df2[df2['Ticker symbol'].str.startswith('SP')]
print (df2)
Ticker symbol Security SEC filings \
407 SPG Simon Property Group Inc reports
415 SPGI S&P Global, Inc. reports
418 SPLS Staples Inc. reports
GICS Sector GICS Sub Industry \
407 Real Estate REITs
415 Financials Diversified Financial Services
418 Consumer Discretionary Specialty Stores
Address of Headquarters Date first added CIK
407 Indianapolis, Indiana NaN 1063761
415 New York, New York NaN 64040
418 Framingham, Massachusetts NaN 791519
#convert column to list, add SPY because missing
L = ['SPY'] + df2['Ticker symbol'].tolist()
print (L)
['SPY', 'SPG', 'SPGI', 'SPLS']
df1 = pd.DataFrame({'SPY': [df.Open.iloc[0]]},
index=[df.index[0]])
df1 = df1.reindex(columns=L)
print (df1)
SPY SPG SPGI SPLS
2006-11-22 140.75 NaN NaN NaN
假设您有一个针对不同股票的数据帧列表
df_list
,并且列表中的每一项都具有与示例中的df
相同的外观
您可以首先使用以下命令将它们连接到一个帧中:
df1 = pd.concat(df_list)
然后
df1[["Open", "Ticker"]].reset_index().set_index(["Date", "Ticker"]).unstack()
它应该给你一个输出,比如
Open
Ticker AGG SPY
Date
2006-11-22 NAN 140.75
df
中只有一行的可能重复?是的,在df中只有一行,否则我应该在df中添加一行AGG标记(全部NaN)?然后使用“df=pd.pivot(index=df.index,columns=df.ticker,values=df.Open)”可以将所有标记添加到列表中吗?您能解释如何将所有标记添加到列表中吗?难题,可以在网上找到一些表格吗?你能帮我吗?我找到了所有的标准普尔500指数: