![](/img/trans.png)
[英]how to simultaneously print all the matched values in a new column in 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
,如果KIDS
或TEENS
大于 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.