Python 为什么我总是得到';楠';当我尝试将csv数据框中的列添加到在pandas上打开的现有数据框时的值?
我有一个现有的数据帧(df1),格式如下:Python 为什么我总是得到';楠';当我尝试将csv数据框中的列添加到在pandas上打开的现有数据框时的值?,python,pandas,dataframe,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): 我试图在第一个数据帧(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):
我试图在第一个数据帧(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
非常感谢你的帮助
Tks 看起来您的索引不同
df1
似乎将Date
作为索引,但df2
将Date
作为列
将df2
的索引设置为Date
,您应该能够按预期创建列:
df2=df2.设置索引(“日期”)
df1['Exreturn']=df1['Return']-df2['Daily SONIA Rate']
#日期调整关闭返回Exreturn
#2019-01-02 475.365143楠楠
# 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
在您的情况下
df1['Exreturn'] = df1['Return'] - df1.Date.map(df2.set_index('Date')['Daily SONIA Rate'])
运行df1.dtypes时的输出是什么?添加另一列的代码是什么样子的?嗨,Blake,我最后一行生成Nan值的代码是:df1.assign(Exreturn=df1['Return']-df2['Daily SONIA Rate'])TksIt worked!!!!非常感谢你!非常感谢。
df1['Exreturn'] = df1['Return'] - df1.Date.map(df2.set_index('Date')['Daily SONIA Rate'])