Python 如何基于布尔表达式和其他两列的关系在dataframe中创建列
我有一个数据帧,df,带有列“a”、“b”和“c”。我想创建列“d”,每行上都有条件:Python 如何基于布尔表达式和其他两列的关系在dataframe中创建列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,df,带有列“a”、“b”和“c”。我想创建列“d”,每行上都有条件: if type(a) != str: df['d'] = df['a'] else: df['d'] = df['b']/df['c'] “a”中的某些值是字符串,而某些值不是字符串。您可以使用numpy.where 下面是使用apply的另一种方法: 我想你可能混淆了where中两种可能性的顺序,但我得到了我需要的:df['d']=np.wheredf['a'].applylambda x
if type(a) != str:
df['d'] = df['a']
else:
df['d'] = df['b']/df['c']
“a”中的某些值是字符串,而某些值不是字符串。您可以使用numpy.where
下面是使用apply的另一种方法:
我想你可能混淆了where中两种可能性的顺序,但我得到了我需要的:df['d']=np.wheredf['a'].applylambda x:typex!=str,df['a'],df['b']/df['b']。谢谢。@slothish1您在评论中将b除以它自己^ ^^df['d']=np.wheredf['a'].applylambda x:typex!=str,df['a'],df['b']/df['c']完成@温:你将如何处理这个问题?
a_is_str = df['a'].apply(lambda x: s is not str)
df['d'] = np.where(a_is_str, df['a'], df['b']/df['c'])
def check_if_str(row):
if isinstance(row['a'], str):
return row['a']
return row['b'] / row['c']
df['d'] = df.apply(check_if_str, axis=1)