从 Pandas 中另一列 y 的两个值添加计算列 x

问题描述 投票:0回答:2

我想转换列 'x' 以便 xn=yn-yn+1,n 是索引。

# importing the dataframe:
import pandas as pd

​data = pd.read_csv('data_xy.csv')
data = pd.DataFrame(data)

# printing the dataframe:
data
    x   y
0   2   15
1   3   13
2   4   10
3   1   6
4   3   5
5   0   2

我试过这个方法,但是不行:

# Try of redefining 'x' as xn = yn - yn1:
data['x'] = data['y'] - data[1:, 'y']

# Error message:
InvalidIndexError: (slice(1, None, None), 'y')

我也考虑过 .iloc() 方法,但我不知道如何将它用于我的目的

我没能找到与我类似的以前的问题,尽管它一定已经被问过。

python pandas dataframe calculated-columns
2个回答
0
投票

你要找的是

Series.shift()
。有了它,您可以将 y 列的值移动 n 行。

In [1]: data['x'] = data['y'] - data['y'].shift(-1)
   ...: data

Out[1]: 
     x   y
0  2.0  15
1  3.0  13
2  4.0  10
3  1.0   6
4  3.0   5
5  NaN   2

0
投票

您可以使用

diff

data['x'] = data['y'].diff(-1).fillna(0)
print(data)

# Output
     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
© www.soinside.com 2019 - 2024. All rights reserved.