data= {'start_value':[10,20,30,40,50,60,70],
'identifier':['+','+','-','-','+','-','-']}
df = pd.DataFrame(data)
start_value identifier
0 10 +
1 20 +
2 30 -
3 40 -
4 50 +
5 60 -
6 70 -
我试图创建一个新列“end_value”,根据“identifier”列中的“+”或“-”值,它会导致 *"*start_value”列的+5或-5。结果是下面的df。
start_value identifier end_value
0 10 + 15.0
1 20 + 25.0
2 30 - 25.0
3 40 - 35.0
4 50 + 55.0
5 60 - 55.0
6 70 - 65.0
运行这段代码,我意识到替换了“end_value”列中的值,结果是这个df
df['end_value'] = 5 + df.loc[df['identifier']=="+"]['start_value']
df['end_value'] = -5 + df.loc[df['identifier']=="-"]['start_value']
start_value identifier end_value
0 10 + NaN
1 20 + NaN
2 30 - 25.0
3 40 - 35.0
4 50 + NaN
5 60 - 55.0
6 70 - 65.0
如果标识符col ==“+”加上5,如果标识符col ==“-”减去5,我如何应用if语句来合并结果?
我已经用下面的这篇文章对字符串做了类似的事情,但我不确定如何成功地将其应用于数学运算,导致'end_value' dtype为float。
Pandas: if row in column A contains "x", write "y" to row in column B
2条答案
按热度按时间mnemlml81#
可以使用矢量化操作:
vqlkdk9b2#
您可以将
.apply()
与lambda表达式一起使用。假设标识符列的值是
+
或-