假设我有一个包含三个输入的数据集:
x1 x2 x3
0 a b c
1 d e f
2 g h i
3 j k l
4 m n o
5 p q r
6 s t u
:
:
0、1、2、3是时间,x1,x2,x3是要测量的输入。因此,这里x1输入每隔一小时测量一次。 x2和x3将在不同的时间测量。我需要做的是,我想写的是,无论在x1,x2,x3中测得的值是多少,它将相加并减去等于下一次输入的x1值 所以我想做的是:
x1 x2 x3 y
0 a b c a+b-c=d
1 d e f d+e-f=g
2 g h i g+h-i=j
3 j k l j+k-l=m
4 m n o m+n-o=p
5 p q r p+q-r=s
6 s t u s+t-u=v
:
:
根据我的csv文件,这里有我的实际数据:
X1 x2 x3 y
0 63 0 0 63+0-0=63
60(min) 63 0 2 63+0-2 =104
120 104 11 0 104+11-0=93
180 93 0 50 93+0-50=177
240 177 0 2 177+0-2=133
300 133 0 0 133+0-0=next value of x1
我尝试了shift方法,但是它对我来说根本不起作用。我尝试了另一种方法,它奏效了,但并没有如我所愿。在这里,我上传了代码。
Code :
data = pd.read_csv('data6.csv')
i=0
j=1
while j < len(data):
j=data['x1'][i] - data['x2'][i] + data['x3'][i]
i+=1
j!=i
print(j)
这是可行的,但仅显示一个数据
63
在我的csv文件中,这是x1输入的第二个输入值。 我想连续编写此代码,并读取上面显示的值。 谁能帮助我解决这个问题?
答案 0 :(得分:1)
尝试:
>>> df['y'] = df['x1'] + '+' + df['x2'] + '-' + df['x3'] + '!=' + df.shift(-1)['x1']
>>> df
x1 x2 x3 y
0 a b c a+b-c!=d
1 d e f d+e-f!=g
2 g h i g+h-i!=j
3 j k l j+k-l!=m
4 m n o m+n-o!=p
5 p q r p+q-r!=s
6 s t u NaN
>>>
答案 1 :(得分:0)
我在您的帮助下找到了答案。非常感谢您对我的帮助。 @ Adam.Er8,@ U10-Forward和@ anky_91
这是我的代码:
df = pd.DataFrame(data)
df['y'] = 0
for i in range(len(df)-1): #iterating between all the rows of dataframe
df['y'].iloc[i] == df['x1'].iloc[i] + df['x2'].iloc[i] - df['x3'].iloc[i]
df['y'].iloc[i] = df['x1'].iloc[i+1]