我有一个像这样的df
df1:
Quantity Date Open
0 NaN 2006-01-16 NaN
1 -20.0 2006-01-17 NaN
2 -20.0 2006-01-18 NaN
3 NaN 2006-01-19 NaN
4 20.0 2006-01-20 NaN
. . . .
. . . .
. . . .
另一个数据帧看起来像这样
df2
Date Open Quantity
0 2006-01-16 4567.00 -20.0
1 2006-01-19 4506.00 20.0
2 2006-01-25 4495.05 -20.0
3 2006-01-27 4609.80 20.0
4 2006-02-01 4574.05 -20.0
我要做的是在['Quantity','Open'列上合并df1和df2 假设它只在df1.Quantity为NaN的行上合并。因此,df1应该是这样的
df1:
Quantity Date Open
0 -20.0 2006-01-16 4567.00
1 -20.0 2006-01-17 NaN
2 -20.0 2006-01-18 NaN
3 20.0 2006-01-19 4506.00
4 20.0 2006-01-20 NaN
我尝试的是这个代码df1.Open = df1.loc[df1['Quantity'].isna(), 'Open'].fillna(df2.EntryPrice)
。我尝试了这个方法,因为我确信df2中的日期包含在df1中的日期中,并且在df1.Quantity中具有NaN值。但是,当我运行这个方法时,这就是结果
Quantity Date Open
0 -20 2006-01-16 4567.0
1 -20.0 2006-01-17 NaN
2 -20.0 2006-01-18 NaN
3 20 2006-01-19 4609.8
4 20.0 2006-01-20 NaN
... ... ... ...
3317 -20.0 2017-05-23 NaN
3318 NaN 2017-05-23 NaN
3319 20.0 2017-05-24 NaN
3320 20.0 2017-05-25 NaN
3321 20.0 2017-05-26 NaN
如您所见,在第3318行,Quantity和Open列中的NaN值仍然未填充。有人能帮我吗
在两个
DataFrame
中创建DatetimeIndex
,然后仅为筛选的行替换Open
中缺失的值,然后替换Quantity
所有缺失的行:相关问题 更多 >
编程相关推荐