【问题标题】:Add series to only the first row in a DataFrame in Python仅将系列添加到 Python 中 DataFrame 的第一行
【发布时间】:2021-01-22 21:55:48
【问题描述】:

我有一系列标准普尔 500 指数成分股的股票代码(股票代码)。我想在 Ticker 列和 2021-01-22 的行内将所有代码添加到我的 DataFrame (SP)。

所以只需将所有代码复制到一个单元格中,如下所示:

SP = pd.DataFrame(data={'Date': "2021-01-22", 'Ticker': ['MMM,ABT,ABBV,...','NaN','NaN']})
SP

    Date    Ticker
0   2021-01-22  MMM,ABT,ABBV,...
1   2021-01-22  NaN
2   2021-01-22  NaN

我试过 SP.at[0, 'Ticker'] = ticker ,但没用。

【问题讨论】:

  • 你想要所有的代码都在同一行吗?
  • 同一单元格中的所有代码。
  • 好的,所以你想要 Date = '2021-01-22' 行中的所有代码列表,列名称为 Ticker,对吧?
  • 是的,完全正确!在 Ticker 列中提到的日期行中的所有代码

标签: python dataframe


【解决方案1】:

好的,你可以这样做

ticker_list = list(ticker.values)
SP.iloc[5494,1] = ', '.join(ticker_list)
SP

在这里,我刚刚制作了一个股票代码值列表并将其附加到您想要的行中。 通过查看您的图片,日期“2021-01-22”的行似乎是 5494。

【讨论】:

    【解决方案2】:

    使用日期字段创建 SP 数据框

    SP = pd.DataFrame(data={'Date': ["2021-01-22","2021-01-21","2021-01-20"]})    
    

    使用“NaN”值创建代码列

    SP['Ticker']='NaN'    
    

    创建代码数据框 - 如果您要将列表转换为数据框以便满足此要求,则可以忽略此步骤

    Ticker=pd.DataFrame(['MMM','ABT','ABBV','...','NaN','NaN'])    
    

    将 Ticker 数据框列数据转换成列表并分配给 SP 数据框中的 Ticker 列

    SP['Ticker'][0]=Ticker[0].tolist()  #From Data Frame  
    

    Ticker  = ['MMM','ABT','ABBV','...','NaN','NaN']
    SP['Ticker'][0]=Ticker              #From pre-defined list  
    
    display(SP)
    

    【讨论】:

    • 我已将我的列表(ticker)转换为 DataFrame 并尝试将其作为列表添加到 SP['Ticker],但我总是收到错误:KeyError:0。我已复制您的代码
    • 当您将列表分配给数据框的列时,它会将每个列表项作为行值读取,如果不是,它将向您抛出错误。列表项计数与否不匹配。数据框中的行数。在这里,我创建了空列并将列表分配给该列的第一个单元格。即 SP['Ticker'][0],零表示第一个单元格。
    猜你喜欢
    • 2020-03-04
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2018-03-06
    • 2019-08-17
    • 2017-01-21
    相关资源
    最近更新 更多