Pandas新增一列并按条件赋值是什么意思?

Pandas新增一列并按条件赋值是什么意思?,第1张

DataFrame新增一列:如果list为空,赋值为0;如果list列不为空,将amount列中对应的行值赋值到新列。

pandas是基于NumPy的一种工具,该工具是为解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地 *** 作大型数据集所需的工具。

pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。

Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。

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

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

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存