python - 当我尝试将 csv 数据帧中的列添加到在 pandas 上打开的现有数据帧时,为什么我不断收到 'Nan' 值?

标签 python pandas dataframe

我有一个现有的数据框(df1),格式如下:

Date        Adj Close   Return
2019-01-02  475.365143  NaN
2019-01-03  468.232574  -0.015004
2019-01-04  480.232086  0.025627
2019-01-07  479.644653  -0.001223
2019-01-08  491.644226  0.025018

和一个单独的 csv 文件 (df2):

    Date        Daily SONIA Rate
0   2019-01-02  0.7044
1   2019-01-03  0.7048
2   2019-01-04  0.7046
3   2019-01-07  0.7052
4   2019-01-08  0.7052

我正在尝试向第一个数据帧 (df1) 添加另一列,该列从 df1 中的返回中减去每日 SONIA 费率 (df2),并返回 df1 中的一列及其结果。我尝试过的每一种可能的方法都会返回以下内容:

Date        Adj Close   Return      Exreturn    
2019-01-02  475.365143  NaN         NaN
2019-01-03  468.232574  -0.015004   NaN
2019-01-04  480.232086  0.025627    NaN
2019-01-07  479.644653  -0.001223   NaN
2019-01-08  491.644226  0.025018    NaN

非常感谢一些帮助。

谢谢!

最佳答案

看来您的索引不同。 df1 似乎将 Date 作为索引,但 df2Date 作为列。

df2 的索引设置为 Date,您应该能够按预期创建列:

df2 = df2.set_index('Date')

df1['Exreturn'] = df1['Return'] - df2['Daily SONIA Rate']

#       Date   Adj Close    Return  Exreturn
# 2019-01-02  475.365143       NaN       NaN
# 2019-01-03  468.232574 -0.015004 -0.719804
# 2019-01-04  480.232086  0.025627 -0.678973
# 2019-01-07  479.644653 -0.001223 -0.706423
# 2019-01-08  491.644226  0.025018 -0.680182

关于python - 当我尝试将 csv 数据帧中的列添加到在 pandas 上打开的现有数据帧时,为什么我不断收到 'Nan' 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66936806/

相关文章:

python - 将一个 pandas DataFrame 的副本合并到另一个 DataFrame 的每一行中?

r - 过滤 R data.frames 时更新因子水平

python - Tornado 发生器在列表中的任何 future 恢复

python - PySpark - 逐行转换为 JSON

python - 阻止 GitPython 在尝试克隆不存在的远程存储库时询问凭据

python - 打开 Excel 文件时出现 Pandas IndexError

python - Pandas - 通过获取其他列的行差异来创建新列

python - 在 python 中正确使用 isinstance

python - 生成模型越来越长

r - 将多行转换为多列(长格式转换为宽格式不起作用(?))