繁体   English   中英

如何将单元格值的总和作为字符串打印到 pandas 的新列中? (如果别的)

[英]How to print the sum of cell values as a string into a new column in pandas? (IF/ELSE)

我是 Python 的初学者,并且有以下 df:

print(df)
>>>
NAME     KIDS     TEENS 
Steve     1         0  
John      0         1 
Peter     0         2
Frank     0         0
Jessica   1         0
Donny     0         0

我的目标是创建一个名为“Children”的新列,它根据 KIDS 和 TEENS 列中的值指示该人是否有孩子。 我的想法是使用 IF 语句。

如果“儿童”+“青少年”> 0,则儿童“是”,否则“否”。

这是一个好方法吗?我怎样才能实现它?

最终结果应如下所示:

print(df)
>>>
NAME     KIDS     TEENS   CHILDREN
Steve     1         0       YES
John      0         1       YES
Peter     0         2       YES
Frank     0         0       NO
Jessica   1         0       YES
Donny     0         0       NO

您可以使用以下

df['CHILDREN'] = (df['KIDS'] | df['TEENS']).astype(bool)

因为0是 Falsey 并且任何数字都是True ,如果两者都是0 ,这将是False ,如果KIDSTEENS大于 0,这将是 True。

我建议使用 boolean 值(True/False)来表示这一点,但如果你想要字符串,你可以使用df['CHILDREN'].replace({True:'Yes', False: 'No'})

您可以使用numpy.where

df['CHILDREN'] = np.where(df.KIDS + df.TEENS > 0, 'YES', 'NO')

Output:

>>> df

      NAME  KIDS  TEENS CHILDREN
0    Steve     1      0      YES
1     John     0      1      YES
2    Peter     0      2      YES
3    Frank     0      0       NO
4  Jessica     1      0      YES
5    Donny     0      0       NO

使用的设置:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'NAME': ['Steve', 'John', 'Peter', 'Frank', 'Jessica', 'Donny'],
    'KIDS': [1, 0, 0, 0, 1, 0],
    'TEENS': [0, 1, 2, 0, 0, 0]
})

这是一种方法

df['Children'] = (df['KIDS'] + df['TEENS']).astype(bool)

或者

df['Children'] =  df.sum(axis=1).astype(bool)
    NAME    KIDS    TEENS   Children
0   Steve     1     0       True
1   John      0     1       True
2   Peter     0     2       True
3   Frank     0     0       False
4   Jessica   1     0       True
5   Donny     0     0       False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM