熊猫系列的变动和条件返回系列的真值不明确

时间:2019-12-05 23:53:40

标签: pandas iteration conditional-statements series shift

我有一个熊猫系列df,其中包含10个值(均为双打)。 我的目标是创建一个如下的新系列。

   newSerie = 1 if df > df.shift(1) else 0

换句话说,如果newSerie的当前值大于先前值,则df输出1(否则应输出0)。

但是,我得到了:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

此外,我的目标是将dfnewSerie连接为一个数据帧,但是newSerie输出9值,因为我们无法将df的第一个值与shitf进行比较(1)。因此,我需要将newSerie的第一个值设为空值,以便能够进行串联。

我该怎么做?

举个例子,假设我的输入仅是Series df。我的输出应如下图所示:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用shiftdiff

# example dataframe:
data = pd.DataFrame({'df':[10,9,12,13,14,15,18,16,20,1]})

   df
0  10
1   9
2  12
3  13
4  14
5  15
6  18
7  16
8  20
9   1

使用Series.shift

data['NewSerie'] = data['df'].gt(data['df'].shift()).astype(int)

Series.diff

data['NewSerie'] = data['df'].diff().gt(0).astype(int)

输出

   df  NewSerie
0  10         0
1   9         0
2  12         1
3  13         1
4  14         1
5  15         1
6  18         1
7  16         0
8  20         1
9   1         0