python - 根据其他列回填
问题描述
df=pd.DataFrame({"Date":[date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2)],
"CatID":[1,1,1,None,2,2,2,2],
"ShopID":[1,1,1,1,2,2,2,2]
})
df.CatID=df['CatID'].bfill()
df
对于 中的 None 值CatID
,我希望根据ShopID
. 该None
值由 2 填充,这不是我想要的(因为值CatID
来自ShopID=2
),它应该保持为None
,我该怎么办?
解决方案
我不确定您到底想达到什么目标:
import pandas as pd
from datetime import date
df=pd.DataFrame({"Date":[date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2)],
"CatID":[1,1,1,None,2,2,2,2],
"ShopID":[1,1,1,1,2,2,2,2]
})
df['CatID_copy'] = df['CatID']
df['CatID'] = df['CatID'].bfill()
df.loc[df['CatID_copy'].isna(), 'CatID'] = df['CatID_copy']
df.drop(columns='CatID_copy', inplace=True)
输出:
Date CatID ShopID
0 2019-10-01 1.0 1
1 2019-10-02 1.0 1
2 2019-10-01 1.0 1
3 2019-10-02 NaN 1
4 2019-10-01 2.0 2
5 2019-10-02 2.0 2
6 2019-10-01 2.0 2
7 2019-10-02 2.0 2
如果有不同,请附上预期的输出。
推荐阅读
- python - Python无法比较日期框中的日期
- netty - 为什么传递给 io.netty.handler.codec.http2.Http2MultiplexCodecBuilder#forServer 的 ChannelHandler 需要是 @Sharable?
- jquery - Rails jquery如何获取动态添加内容id
- java - Selenium-Java-Actions TypeError: rect is undefined
- azure-service-fabric - 分区解析在 Service Fabric 中没有意义
- github - Markdown 表未显示在 github .md 页面上
- c# - 父滚动时隐藏浮动操作按钮
- java - 在父级或祖先中找不到方法 buttonCap(View)
- ios - 如何在 TableView 中调整自定义单元格的大小?
- android - 房间查询不起作用