对于pandas
,我正在寻找一种方法,根据a列中相应行的子字符串,将条件值写入B列中的每一行
因此,如果A
中的单元格包含"BULL"
,则将"Long"
写入B
。或者如果A
中的单元格包含"BEAR"
,则将"Short"
写入B
。
期望输出:
A B
"BULL APPLE X5" "Long"
"BEAR APPLE X5" "Short"
"BULL APPLE X5" "Long"
B最初为空:df = pd.DataFrame([['BULL APPLE X5',''],['BEAR APPLE X5',''],['BULL APPLE X5','']],columns=['A','B'])
当您错误地创建数据帧时,您的代码将出错,只需创建一个列
A
,然后基于A
添加B
:或者在创建数据帧之前对数据进行逻辑处理:
供编辑:
或者只需在以下内容之后添加列:
或使用包含:
另外,为了填充
df['B']
,您可以尝试下面的方法-apply
函数的作用是,对于df['A']
的每一行值,它调用applyFunc
函数,参数作为该行的值,而返回的值放在df['B']
的同一行中,但实际发生的情况有所不同,该值不会直接放入df['B']
中,而是创建一个新的Series
,并在最后将新序列分配给df['B']
。可以使用^{} 搜索正则表达式模式} 将这些字符串替换为
BULL|BEAR
,然后使用^{Long
或Short
:然而,与
df['A'].map(lambda x:...)
相比,用str.extract
形成中间序列是相当缓慢的。使用IPython的%timeit
来计时基准大部分时间花在
str.extract
:虽然对
Series.map
的调用相对较快:相关问题 更多 >
编程相关推荐