如何基于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
?如上图所示,它在我的列上运行顺利。好的,我已经知道,这是我的列的数据类型中的一个错误,谢谢!我认为你的答案是最好的