在Pandas中基于列y计算生成列x:xn=yn-yn+1
解决方法:计算xn = yn - yn+1并赋值给x列
你的错误是因为在pandas中,data[1:, 'y']这种索引方式不被支持——[]操作符无法同时接收行切片和列名的组合参数。下面提供两种简洁的解决方案:
方法一:使用shift(-1)(推荐)
shift(-1)可以将y列的所有元素向下移动一行,当前行的y值减去下移后的y值,正好对应yn - yn+1:
import pandas as pd data = pd.read_csv('data_xy.csv') # 计算xn = yn - yn+1 data['x'] = data['y'] - data['y'].shift(-1) # 最后一行没有yn+1,按原数据需求填充为0 data['x'].iloc[-1] = 0
执行后得到的data结果:
x y 0 2.0 15 1 3.0 13 2 4.0 10 3 1.0 6 4 3.0 5 5 0.0 2
方法二:使用iloc切片
通过iloc分别取y列的前n-1行和后n-1行做差,再单独处理最后一行:
import pandas as pd data = pd.read_csv('data_xy.csv') # 对前5行(索引0到4)赋值 data.loc[:4, 'x'] = data['y'].iloc[:-1] - data['y'].iloc[1:] # 最后一行设为0 data.loc[5, 'x'] = 0
这种方式可以精准控制每一行的赋值,避免SettingWithCopyWarning。
内容的提问来源于stack exchange,提问作者Mbld
相关产品推荐
相关产品推荐

