根据同一熊猫数据框中其他列的值创建包含布尔值或NaN的新列

bdn711

我想在pandas数据框中创建一个新列,该列的取值为True,False或NaN,具体取决于在同一数据框中的其他两个列中找到的值,该值也仅包含True,False或NaN值。具体来说,如下所示,新列中的行值应为:(a)如果两个参考列值之一为True,则为True;(b)如果两个参考列值均为False或它们是False和NaN的组合,则为False ,或(c)NaN(如果两个参考列值均为NaN)。

col_A + col_B => new_col(所需值)

  • 真+真=>真
  • 真+假=>真
  • 正确+ NaN =>正确
  • 假+假=>假
  • 假+ NaN =>假
  • NaN + NaN => NaN

最初,如下所示,我尝试为col_A或col_B为True的新列分配值,但是可以理解的是,只要其中一列或两列都包含NaN,它就会返回False。

df[new_col] = df[col_A] | df[col_B]

我还想出了如何创建对col_A和col_B均为NaN的行返回True的列,但我仍在努力寻找下一步。

df[new_col] = pd.isnull(df[col_A]) & pd.isnull(df[col_B]) 

我觉得我最终可以使用for循环/ if语句获得正确的输出,但是我的理解是,这将是超级低效的,而且似乎应该有一种更高效/直接的方法来获得我想要的结果。

用完

使用.any

设置数据框:

dict = {
    'col_A': [True, True, True, False, False, False, np.NaN, np.NaN, np.NaN], 
    'col_B': [True, False, np.NaN, False, True, np.NaN, np.NaN,True, False]   
       }
df = pd.DataFrame(dict)

print(df)

   col_A  col_B
0   True   True
1   True  False
2   True    NaN
3  False  False
4  False   True
5  False    NaN
6    NaN    NaN
7    NaN   True
8    NaN  False

创建一个新列并将所有值设置为false。我们将填写其他值。

df['new_col'] = False

使用.any()填写剩余的True和NaN值。

df.loc[df[['col_A', 'col_B']].any(1), 'new_col'] = True

打印(df)

   col_A   col_B   new_col
0   True   True     True
1   True  False     True
2   True    NaN     True
3  False  False    False
4  False   True     True
5  False    NaN    False
6    NaN    NaN    False
7    NaN   True     True
8    NaN  False    False

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫根据其他列的值创建新的列ID

根据其他列值在熊猫中添加新列

熊猫用同一行中的其他列值替换数据框值

根据条件在熊猫数据框中添加新列,并替换不同列中的Nan值

根据其他列的唯一值的长度在熊猫中创建新列

根据同一列中的其他值将列中的值替换为NaN

根据其他列中的值,在数据框中创建具有递增值的新列

根据其他两个数据框列中的值条件创建新列

熊猫-创建新列,该列的值取自同一数据框中的其他行

根据其他数据框中的列值在熊猫数据框中创建列

熊猫使用其他列中的值创建新列,并根据列值进行选择

熊猫根据其他列中的条件和值创建新列

根据其他列中的值在python 3(pandas)数据框中创建新列

如何根据同一数据框其他列中的值过滤熊猫数据框中的结果?

熊猫-是否可以根据其他列中的布尔值(将其视为变量)来创建列?

根据其他2个数据框中的值创建新列

根据其他列行中的过滤值,在pandas数据框中创建一个新列

根据数据框中的其他列更改熊猫数据框的列值

根据其他列中的布尔值添加新列

根据其他数据框值创建一列

根据其他数据框(按日期)中列标题的隶属关系在pandas数据框(按日期)中设置布尔值

从其他数据框熊猫填充数据框中的列的NAN值

根据其他两列的布尔值返回一个布尔值

根据熊猫中另一列上的值在数据框中创建一个新列

根据熊猫数据框中其他列的条件和值创建新列

根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

如何根据其他两列中的值在熊猫数据框中添加新列

如何根据 julia 中的其他列值有条件地在数据框中创建新列

创建一个基于数据框中其他列的值创建新列的函数