如何基于Python中的其他列在DataFrame中创建新列?

如何基于Python中的其他列在DataFrame中创建新列?,python,pandas,Python,Pandas,我的数据框架如下所示: data = pd.DataFrame({"col1" : ["a", "b", "c"], "binary" : [0, 1, 0]}) 我想在名为“new”的数据框中创建并添加新列,其中如果列中的“binary”为1,则我希望在我创建的列“new”中有“col1”中的数据,但如果“binary”列中的值为0,则我希望有np.

我的数据框架如下所示:

data = pd.DataFrame({"col1" : ["a", "b", "c"], 
                     "binary" : [0, 1, 0]})
我想在名为
“new”
数据框中创建并添加新列,其中如果列中的
“binary”
为1,则我希望在我创建的列
“new”
中有
“col1”
中的数据,但如果
“binary”
列中的值为0,则我希望有
np.NaN
。下面是根据我的描述和上面的框架,我真正需要的结果


您可以使用
numpy
软件包中的
where
,并执行以下操作:

import pandas as pd
import numpy as np
df = pd.DataFrame({"col1" : ["a", "b", "c"], "binary" : [0, 1, 0]})
df['new'] = np.where(df['binary']==1,df['col1'],np.nan)
哪个
打印

print(df)
  col1  binary  new
0    a       0  NaN
1    b       1    b
2    c       0  NaN

您可以使用
numpy
包中的
where
,并执行以下操作:

import pandas as pd
import numpy as np
df = pd.DataFrame({"col1" : ["a", "b", "c"], "binary" : [0, 1, 0]})
df['new'] = np.where(df['binary']==1,df['col1'],np.nan)
哪个
打印

print(df)
  col1  binary  new
0    a       0  NaN
1    b       1    b
2    c       0  NaN

有很多方法可以正确地做到这一点,
将numpy作为np导入;df['new']=np.where(df['binary'].eq(1),df['col1'],np.nan)
有很多方法可以正确地做到这一点,
将numpy作为np导入;df['new']=np.where(df['binary'].eq(1),df['col1'],np.nan)
在您的代码之后,我有一个错误:TypeError:invalid type promotion您是否
将熊猫作为pd导入?如上图所示,它在我的列上运行顺利。好的,我已经知道,这是我的列的数据类型中的一个错误,谢谢!我选择您的答案作为最佳答案在您的代码之后我有以下错误:类型错误:无效类型升级您是否
将熊猫导入为pd
?如上图所示,它在我的列上运行顺利。好的,我已经知道,这是我的列的数据类型中的一个错误,谢谢!我认为你的答案是最好的