python - 填充列 C ,如果 A 列和 B 列的条件符合 pandas
问题描述
我有一个看起来像这样的数据集
Contract Sections Trade_Qty_0 TradeQty Bid iBid
5 O.Z21 O2 no 42985 99.795 NaN
6 O.H22 O2 no 54538 99.810 99.81000
7 O.M22 O2 no 31295 99.795 99.79500
8 S3.U20 S3 no 3831 3.000 NaN
9 S3.Z20 S3 no 3295 -9.500 -9.25000
10 S6.M26 S6 yes 0 NaN 7.75000
11 S6.U26 S6 yes 0 NaN 5.50000
12 S6.Z26 S6 yes 0 NaN 5.50000
13 S6.H27 S6 yes 0 NaN 3.50000
14 S9.U26 S9 yes 0 NaN 9.00000
15 S9.Z26 S9 yes 0 NaN 7.50000
16 F3.U26 F3 yes 0 1.000 NaN
17 F3.Z26 F3 yes 0 -3.000 NaN
我想做的是检查是否TradeQty
为0?如果为 0,我想检查是否Bid
已填充。如果未填充,我想在新列中打印“否”说column C
。但是,如果已填充,我想打印“是”。所以我希望我的 C 列看起来像
Column C'
NAN
NAN
NAN
NAN
NAN
no
no
no
no
no
no
yes
yes
我正在做的是以这种方式分配值
A016 = A016.assign(Trade_Qty_0_Bid_present=((A016.TradeQty== 0) & (A016.Bid.notnull())))
A016.Trade_Qty_0_Bid_present.replace(True, 'Yes', inplace=True)
A016.Trade_Qty_0_Bid_present.replace(False, 'no', inplace=True)
但我得到的答案是
Column C'
no
no
no
no
no
no
no
no
no
no
no
yes
yes
解决方案
您可以使用另一个赋值将值替换为NaN
。
A016 = A016.assign(Trade_Qty_0_Bid_present=((A016.TradeQty== 0) & (A016.Bid.notnull())))
A016.Trade_Qty_0_Bid_present.replace(True, 'Yes', inplace=True)
A016.Trade_Qty_0_Bid_present.replace(False, 'no', inplace=True)
A016.loc[A016.TradeQty!=0, "Trade_Qty_0_Bid_present"] = pd.NA
推荐阅读
- firebase - 使用 Geofire 查询时出现 getter 错误
- python - 执行单元测试时出现 Python TypeError
- shell - 获取文件中超过一定行数的所有文本块
- c# - 在 C# 中保护临时文件
- firebase - 显示来自 firestore 两个属性的数据
- stata - 不平衡面板数据集事件前后的子采样年份
- java - 根据证书验证数据
- java - HashMap.get() 在一个片段中有效,而在另一个片段中无效,为什么?
- calendar - 如何在全日历 4.0 日模式下设置事件宽度
- html - JAWS 将标题读取为可点击,即使父 div 没有关联的点击处理程序