pandas 按照之前几列的条件新增一列?

pandas 按照之前几列的条件新增一列?,第1张

先说原因:三条语句按顺序运行,肯定以最后一句结果为准,所以你感觉只有最后一行生效。

一个建议:取样本测试数据的时候,考虑下取方便显示验证的数据。

解决方案:如果之前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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11887703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存