先说原因:三条语句按顺序运行,肯定以最后一句结果为准,所以你感觉只有最后一行生效。
一个建议:取样本测试数据的时候,考虑下取方便显示验证的数据。
解决方案:如果之前tag内容,直接保留tag内容。代码如下变动
my_dict = {'keyword': [False, False, False, True], 'sampling': [False, True, False, False],
'value': [True, False, False, False], 'Tag': ['No Tag', 'No Tag', 'No Tag', 'No Tag']}
result_fin_copy = pd.DataFrame(my_dict)
print(result_fin_copy)
result_fin_copy['Tag'] = result_fin_copy.apply(lambda x: 'No Tag' if x.value != True else 'Score', axis=1)
result_fin_copy['Tag'] = result_fin_copy.apply(lambda x: x.Tag if x.sampling != True else 'Sampled', axis=1)
result_fin_copy['Tag'] = result_fin_copy.apply(lambda x: x.Tag if x.keyword != True else 'Keyword', axis=1)
print(result_fin_copy)
运行结果:
keyword sampling value Tag
0 False False True No Tag
1 False True False No Tag
2 False False False No Tag
3 True False False No Tag
keyword sampling value Tag
0 False False True Score
1 False True False Sampled
2 False False False No Tag
3 True False False Keyword
Process finished with exit code 0
后记,这个代码还是有缺陷的,或者说这个样本数据本身的逻辑还有点问题,即,如果一行同时满足两个条件,应该显示哪个Tag。
上一节我们学习了 Series 结构的增删改查基本 *** 作,本节掌握 DataFrame 的增删改查将变得非常轻松~
首先,我们来构造一个 DataFrame :
查询指定列:
使用 loc 和 iloc 查询指定行:
此外, iloc 和 loc 还可以接收一个坐标,查询 DataFrame 的指定值或区域:
最后,还有经常使用的布尔索引:
修改指定值:
修改索引和列名:
增加一行内容:
增加多行内容(纵向拼接两个 DataFrame ),首先构造一个新的 DataFrame df2 :
拼接两个 DataFrame:
pd.concat 只做简单的拼接,即便是索引重复也不会覆盖:
通常,我们会使用 ignore_index=True 来重新生产数字索引:
为 df2 增加一列 DD :
如果是增加多列呢?同样的我们还是使用 pd.concat ,不过要将参数设置为 axis=1 。下面我们先构造一个两行两列的 DataFrame df4 :
拼接 df2 与 df4 :
删除上述 df5 中的 E 列和 F 列:
删除多列时,也可以使用 drop 方法,不过要指定 axis=1 :
也可以使用 drop 方法删除多行,删除行时使用默认参数 axis=0 即可:
Pandas中,属性访问的方式可以增加或者创建新的数据列。
A.正确
B.错误
正确答案:B
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)