创建新列,在插入之前检查其他列
Create new column which checks other columns before inserting
我有一个 df,我想插入一个新列来检查 ColA、ColB 和 ColC。新列将具有值 'Yes' 除非满足上述 Cols 的任何对应值(在字典中提供)。我如何在 python 中实现这一目标?
import pandas as pd
import numpy as np
to_check= {'ColA':'Yes', 'ColB':'Y','ColC':'True'}
df = pd.DataFrame(
{
'ID': ['AB01', 'AB02', 'AB03', 'AB04', 'AB05','AB06','AB07','AB08'],
'ColA': ["Yes","No",np.nan,"No",
"Yes", "","", "No"],
'ColB': ["N","","Y","",
"Y", np.nan,"", "N"],
'ColC': [np.nan,"True","False",np.nan,"False",
"True", "",""],
'Type': [85,98,84,70,50,np.nan,85,74]
}
)
最终结果应该是这样的,新列名为 'Result',我必须在代码中使用字典:
您可以使用 if not any
of the rows match the dictionary value:
c = df[to_check.keys()].eq(to_check).any(1)
df['Result'] = np.where(c,'','Yes')
print(df)
ID ColA ColB ColC Type Result
0 AB01 Yes N NaN 85.0
1 AB02 No True 98.0
2 AB03 NaN Y False 84.0
3 AB04 No NaN 70.0 Yes
4 AB05 Yes Y False 50.0
5 AB06 NaN True NaN
6 AB07 85.0 Yes
7 AB08 No N 74.0 Yes
我有一个 df,我想插入一个新列来检查 ColA、ColB 和 ColC。新列将具有值 'Yes' 除非满足上述 Cols 的任何对应值(在字典中提供)。我如何在 python 中实现这一目标?
import pandas as pd
import numpy as np
to_check= {'ColA':'Yes', 'ColB':'Y','ColC':'True'}
df = pd.DataFrame(
{
'ID': ['AB01', 'AB02', 'AB03', 'AB04', 'AB05','AB06','AB07','AB08'],
'ColA': ["Yes","No",np.nan,"No",
"Yes", "","", "No"],
'ColB': ["N","","Y","",
"Y", np.nan,"", "N"],
'ColC': [np.nan,"True","False",np.nan,"False",
"True", "",""],
'Type': [85,98,84,70,50,np.nan,85,74]
}
)
最终结果应该是这样的,新列名为 'Result',我必须在代码中使用字典:
您可以使用 if not any
of the rows match the dictionary value:
c = df[to_check.keys()].eq(to_check).any(1)
df['Result'] = np.where(c,'','Yes')
print(df)
ID ColA ColB ColC Type Result
0 AB01 Yes N NaN 85.0
1 AB02 No True 98.0
2 AB03 NaN Y False 84.0
3 AB04 No NaN 70.0 Yes
4 AB05 Yes Y False 50.0
5 AB06 NaN True NaN
6 AB07 85.0 Yes
7 AB08 No N 74.0 Yes