【问题标题】:How to fill dataframe content NA value in empty cell?如何在空单元格中填充数据框内容NA值?
【发布时间】:2017-04-04 12:27:58
【问题描述】:

我有一个数据框 df:

                  Open    Volume  Adj Close     Ticker  
Date                                                                   
2006-11-22  140.750000   45505300   114.480649   SPY 

我想将 df 更改为另一个数据框 开盘价如下:

                  SPY    AGG  
Date                                                                   
2006-11-22  140.750000   NA

它只使用open的数据和两个ticker,那么如何将一个数据帧更改为另一个数据帧?

【问题讨论】:

标签: python pandas dataframe multiple-columns nan


【解决方案1】:

假设您有一个数据框列表 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

【讨论】:

    【解决方案2】:

    我认为您可以通过tickerL 的列表将DataFrame 构造函数与reindex 一起使用:

    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
    

    您可以使用read_html 查找Tickers 的列表:

    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(all NaN) 中添加一行 AGG 代码?然后使用 "df = pd.pivot(index=df.index, columns=df.Ticker, values=df.Open) "
    • 是否可以将所有代码添加到list
    • 您能解释一下如何将所有代码添加到列表中吗?
    • 难题,是否可以在网上找到一些表格?你能帮帮我吗?
    • 我找到所有 s&p500 股票代码:en.wikipedia.org/wiki/List_of_S%26P_500_companies
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2016-10-26
    • 1970-01-01
    相关资源
    最近更新 更多