将Python List插入Pandas数据框行并将行值设置为NaN

xwbd5t1u  于 2023-05-12  发布在  Python
关注(0)|答案(1)|浏览(77)

Pandas将python列表作为新行插入到特定Pandas数据框列中的方法。插入后,将剩余的值填充为NaN。
例如,该列表类似于以下内容:

list_dates = ['2021-12-01', '2021-12-02', '2021-12-03', '2021-12-06', '2021-12-08']

Pandas Dataframe显示为:

df_sentiment.iloc[10:20, : 10]

ticker      AAPL.OQ ABBV.N      ABT.N       ACN.N   ADBE.OQ     AIG.N       AMD.OQ  AMGN.OQ     AMT.N   AMZN.OQ
Date                                        
2021-11-24  NaN     NaN         NaN         NaN     NaN         NaN         NaN     0.632792    NaN     NaN
2021-11-25  NaN     0.211714    NaN         0.846193    0.210173    NaN         NaN     0.043700    NaN     NaN
2021-11-26  NaN     0.115301    -0.629839   NaN     0.081402    -0.287198   NaN     NaN            -0.448907 NaN
2021-11-27  NaN     NaN         0.384544    NaN     0.490425    -0.003641   0.253752    NaN             NaN     NaN
2021-11-28  NaN     NaN         0.036393    NaN     0.003484    NaN         NaN     0.056091    NaN     NaN
2021-11-29  0.163266 -0.165520  0.149920    NaN     -0.014639   -0.448595   0.097651    0.381039    0.058590 -0.016986
2021-11-30  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN         NaN     0.557565 
2021-12-07  NaN     NaN         NaN         0.097732    NaN         NaN         NaN     NaN         NaN     NaN
2021-12-09  NaN     NaN         NaN         NaN     NaN         NaN         NaN         NaN         NaN     NaN
2021-12-10  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN         NaN     NaN

所需的更新,从将列表附加到日期列并将列表值插入“日期”列的行的剩余值设置为NaN,看起来像df_sentiment:

df_sentiment.iloc[10:20, : 10]
ticker      AAPL.OQ ABBV.N      ABT.N       ACN.N   ADBE.OQ     AIG.N       AMD.OQ  AMGN.OQ     AMT.N   AMZN.OQ
Date                                        
2021-11-24  NaN     NaN         NaN         NaN     NaN         NaN         NaN     0.632792    NaN     NaN
2021-11-25  NaN     0.211714    NaN         0.846193    0.210173    NaN         NaN     0.043700    NaN     NaN
2021-11-26  NaN     0.115301    -0.629839   NaN     0.081402    -0.287198   NaN     NaN            -0.448907 NaN
2021-11-27  NaN     NaN         0.384544    NaN     0.490425    -0.003641   0.253752    NaN             NaN     NaN
2021-11-28  NaN     NaN         0.036393    NaN     0.003484    NaN         NaN     0.056091    NaN     NaN
2021-11-29  0.163266 -0.165520  0.149920    NaN     -0.014639   -0.448595   0.097651    0.381039    0.058590 -0.016986
2021-11-30  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN         NaN     0.557565 
2021-12-01  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN     NaN     NaN
2021-12-02  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN     NaN     NaN
2021-12-03  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN     NaN     NaN
2021-12-06  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN     NaN     NaN
2021-12-07  NaN     NaN         NaN         0.097732    NaN         NaN         NaN     NaN         NaN     NaN
2021-12-08  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN     NaN     NaN
2021-12-09  NaN     NaN         NaN         NaN     NaN         NaN         NaN         NaN         NaN     NaN
2021-12-10  NaN     NaN         NaN         NaN     NaN         NaN         NaN     NaN         NaN     NaN

我尝试过append和concat,但无法正确使用,或者出现错误。

11dmarpk

11dmarpk1#

为了追加一个新的行,只有股票代码日期,你可以做以下事情。

# this creates a list of NAN values minus 1 (due to the date)
to_append = [np.NAN] * df_sentiment.shape[1] - 1

# we set the index to the date column so we can append using the loc method
df_sentiment = df_sentiment.set_index("Date")

# iterate over the list dates and append them to your data frame
for date in list_dates:
    df_sentiment.loc[date] = to_append

# move the date column back into the dataframe
df_sentiment = df_sentiment.reset_index()

相关问题