Pandas检查多个列的条件

时间:2017-07-18 01:00:41

标签: python pandas

我有一个数据框,我正在检查所有列中是否Y,否则返回N,如果行中的所有列都是Null则返回Null。

di = {'col1': [None, 'Y', 'N'], 'col2': [None, 'Y', 'N'], 'col3': [None, 'N', 'N']}
df = pd.Dataframe(di)
df['test'] = pd.np.where(df[['col1', 'col2', 'col3']].eq('Y').any(1, skipna=True), 'Y', 'N')

此回报:

 col1  col2  col3 test
0  None None  None    N
1     Y     Y     N    Y
2     N     N     N    N

我希望它返回

  col1  col2  col3 test
0  None  None  None    None
1     Y     Y     N    Y
2     N     N     N    N

2 个答案:

答案 0 :(得分:2)

您可以在内部包含另一个df['test'] = pd.np.where(df[['col1', 'col2', 'col3']].eq('Y').any(1, skipna=True), 'Y', pd.np.where(df[['col1', 'col2', 'col3']].isnull().all(1), None, 'N')) df # col1 col2 col3 test #0 None None None None #1 Y Y N Y #2 N N N N 以检查空条件:

<form action="mailto:" enctype="text/file" method="post">
A3 or A4:<br> 
<input name="A3 or A4" type="text"><br>
Add image:<br>
<input name="image" type="file"><br> 
<input type="submit" value="Send">
</form>

答案 1 :(得分:1)

只需添加最后一行,

di = {'col1': [None, 'Y', 'N'], 'col2': [None, 'Y', 'N'], 'col3': [None, 'N', 'N']}
df = pd.DataFrame(di)
df['test'] = pd.np.where(df[['col1', 'col2', 'col3']].eq('Y').any(1, skipna=True), 'Y', 'N')
df['test'] = pd.np.where(df[['col1', 'col2', 'col3']].isnull().all(1, skipna=True), None, df['test'])