如何基于前一行Max_val值修改DataFrame指定行的Min_val?
修改DataFrame指定位置的值
嘿,这事儿不难,我给你分享两种靠谱的实现方式,其中第二种是pandas官方更推荐的做法哦:
首先先把你的原始代码放出来,方便对照:
import pandas as pd df_ticker = pd.DataFrame({'Min_val': [22382,37876,46717,62247], 'Max_val': [36901,46716,62045,182727], 'Ticker':['$','$$','$$$','$$$$']})
方法1:直接索引赋值
这种方式写法简单,直接定位到要修改的行列位置赋值:
df_ticker['Min_val'][1] = df_ticker['Max_val'][0] + 1
不过要注意,这种链式赋值有时候会触发SettingWithCopyWarning警告,如果你不在意这个警告的话可以用,但更稳妥的是下面的方法。
方法2:使用loc定位修改(推荐)
loc是pandas专门用于基于标签的行列定位的方法,用它修改值不会有警告,而且逻辑更清晰:
df_ticker.loc[1, 'Min_val'] = df_ticker.loc[0, 'Max_val'] + 1
修改完成后,你打印df_ticker就能看到索引1的Min_val已经变成了36901 + 1 = 36902啦。
内容的提问来源于stack exchange,提问作者sdp
相关产品推荐
相关产品推荐

