首页 > 解决方案 > 将计算列添加到 df 的“if”“else”条件的 pandas 等效项

问题描述

下表计算了文本中的唯一单词(在这种情况下为哈姆雷特的德语文本)。

使用 Pandas 我想添加一个列 ['frequency'] 打印三个答案之一。

我是熊猫的新手,所以我最初认为我必须使用“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

标签: pythonpandas

解决方案


这是一个很棒的用例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是您需要在选择之前评估所有条件,并且不会随着更多条件进行扩展。


推荐阅读