pandas - 熊猫系列移位和条件返回系列的真值不明确
问题描述
我有一个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().
此外,在我的目标是连接df
和newSerie
作为数据帧之后,但newSerie
输出 9 值,因为我们无法将第一个值df
与 shitf(1) 进行比较。因此,我需要第一个值为newSerie
空值才能进行连接。
我怎样才能做到这一点?
举个例子,假设我的输入只是系列 df。我的输出应该如下图所示:
解决方案
您可以使用shift
或diff
:
# 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
推荐阅读
- javascript - 无法让机器人识别做出反应的用户是否有角色
- maven - 由于构建时的 kafka 服务访问,Spring Cloud 流应用程序失败
- python-3.x - 添加 URL 链接后,文本类型和大小会自动更改。我该如何解决这个问题?
- python - 在 Python 中显示用于文本分类的朴素贝叶斯的确切结果
- r - 在R中按开始和结束匹配文本
- prometheus - Prometheus 查询 - 计数器随时间增加
- mysql - MySQL 长文本不能有默认值
- html - 如何使带有视频链接的嵌入图像显示为视频预览(在移动设备上)
- xaml - 在哪里可以找到 XamlControlsResources 的 XAML?
- swift - 在 NSTextField 上实现活力效果