我有如下数据
aa bb cc 0 1 2 3 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 6 7 8 9 7 8 9 10 8 9 10 11 9 10 11 12 10 11 12 13 11 12 13 14 12 13 14 15 13 14 15 16 14 15 16 17 15 16 17 18 16 17 18 19 17 18 19 20 18 19 20 21 19 20 21 22
然后我想将第一行与第二行分开,是否有可能在熊猫中做到这一点?
答案 0 :(得分:2)
将DataFrame.div
与DataFrame.shift
一起使用:
df = df.div(df.shift(-1))
print (df)
aa bb cc
0 0.500000 0.666667 0.750000
1 0.666667 0.750000 0.800000
2 0.750000 0.800000 0.833333
3 0.800000 0.833333 0.857143
4 0.833333 0.857143 0.875000
5 0.857143 0.875000 0.888889
6 0.875000 0.888889 0.900000
7 0.888889 0.900000 0.909091
8 0.900000 0.909091 0.916667
9 0.909091 0.916667 0.923077
10 0.916667 0.923077 0.928571
11 0.923077 0.928571 0.933333
12 0.928571 0.933333 0.937500
13 0.933333 0.937500 0.941176
14 0.937500 0.941176 0.944444
15 0.941176 0.944444 0.947368
16 0.944444 0.947368 0.950000
17 0.947368 0.950000 0.952381
18 0.950000 0.952381 0.954545
19 NaN NaN NaN
或者:
df = df.shift().div(df)
print (df)
aa bb cc
0 NaN NaN NaN
1 0.500000 0.666667 0.750000
2 0.666667 0.750000 0.800000
3 0.750000 0.800000 0.833333
4 0.800000 0.833333 0.857143
5 0.833333 0.857143 0.875000
6 0.857143 0.875000 0.888889
7 0.875000 0.888889 0.900000
8 0.888889 0.900000 0.909091
9 0.900000 0.909091 0.916667
10 0.909091 0.916667 0.923077
11 0.916667 0.923077 0.928571
12 0.923077 0.928571 0.933333
13 0.928571 0.933333 0.937500
14 0.933333 0.937500 0.941176
15 0.937500 0.941176 0.944444
16 0.941176 0.944444 0.947368
17 0.944444 0.947368 0.950000
18 0.947368 0.950000 0.952381
19 0.950000 0.952381 0.954545
答案 1 :(得分:1)
使用大小为2的窗口滚动并应用除法
代码
df.rolling(2).apply(lambda x: x[0]/x[1])
输出
aa bb cc
0 NaN NaN NaN
1 0.500000 0.666667 0.750000
2 0.666667 0.750000 0.800000
3 0.750000 0.800000 0.833333
4 0.800000 0.833333 0.857143
5 0.833333 0.857143 0.875000
6 0.857143 0.875000 0.888889
7 0.875000 0.888889 0.900000
8 0.888889 0.900000 0.909091
9 0.900000 0.909091 0.916667
10 0.909091 0.916667 0.923077
11 0.916667 0.923077 0.928571
12 0.923077 0.928571 0.933333
13 0.928571 0.933333 0.937500
14 0.933333 0.937500 0.941176
15 0.937500 0.941176 0.944444
16 0.941176 0.944444 0.947368
17 0.944444 0.947368 0.950000
18 0.947368 0.950000 0.952381
19 0.950000 0.952381 0.954545
答案 2 :(得分:0)
您可以尝试-
df/df.shift(-1)