python - 将计算列添加到 df 的“if”“else”条件的 pandas 等效项
问题描述
下表计算了文本中的唯一单词(在这种情况下为哈姆雷特的德语文本)。
使用 Pandas 我想添加一个列 ['frequency'] 打印三个答案之一。
如果“计数”列中的值 <=10,则频率为“不频繁”
如果“计数”列中的值大于 10,则频率为“频繁”
如果“计数”列中的值为 1,则频率为“唯一”
我是熊猫的新手,所以我最初认为我必须使用“for”循环和“if”“else”。当然,这对我不起作用,在阅读完这篇文章后,我发现您可以使用 .loc[] 代替。干净多了。
我会在下面给出答案,以防其他人非常需要这个设置。这是我之前使用的表格-
count word length
0 67223 0
1 7 deinen 6
2 1 überwachsen 11
3 3 them 4
4 2 fortunens 9
5 1 flammen 7
6 1 ersäuentsezlichen 17
7 2 alleino 7
8 1 empfehle 8
9 1 beschulöffentlicher 19
10 1 unterthänige 12
11 1 pr 2
12 1 zurükzutreiben 14
13 38 wo 2
14 1 schadhaften 11
15 1 ddiese 6
16 1 zurükhaltend 12
17 1 laim 4
18 1 agents 6
解决方案
这是一个很棒的用例pd.cut
:
pd.cut(df['count'],
bins=[-np.inf, 1, 10, np.inf],
labels=['unique', 'infrequent', 'frequent'])
0 frequent
1 infrequent
2 unique
3 infrequent
4 infrequent
5 unique
6 unique
7 infrequent
8 unique
9 unique
10 unique
11 unique
12 unique
13 frequent
14 unique
15 unique
16 unique
17 unique
18 unique
Name: count, dtype: category
Categories (3, object): [unique < infrequent < frequent]
另一个答案的缺点np.select
是您需要在选择之前评估所有条件,并且不会随着更多条件进行扩展。
推荐阅读
- apache-spark - Apache Spark SQL:COALESCE NULL 数组转换为空结构数组
- python - Databricks:如何从 R Dataframe 切换到 Pandas Dataframe(R 到 python 在同一个笔记本中)
- sql - 选择具有“仅”条件的行
- node.js - 我无法安装反应我该如何解决这个问题?
- javascript - onClick问题的多种功能
- ios - 在 SwiftUI 中无法显示来自 Contentful 的数据
- ios - 将自定义类型转换为字符串
- android - FFMPEG for Android 在叠加图片时无法正常工作
- javascript - Node JS 的 Promises 数组仍在
- c# - 使用 IO C# 时应用程序冻结