我有一个数据框,我正在检查所有列中是否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
答案 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'])