我有一个这样的数据框。
import pandas as pd
df = pd.DataFrame({
'col': ['neutral', 'neutral', 'neutral', 'positive', 'positive', 'negative', 'neutral']})
现在我想更新“col”,这样当从正变为负或相反时我得到一个真,否则我得到一个假(即连续相等的值),当有变化时我也得到一个假从正面/负面到中性,反之亦然。
我尝试了几种使用 grouby 和 transform 的方法,但没有任何效果。
我想要的输出是:
df = pd.DataFrame({
'col': ['False', 'False', 'False', 'False', 'False', 'True', 'False']})
map
+ 差异
将正负分别映射到1
和-1
,将中性映射到0
。当您对系列进行差分时,每次正负相继输出的绝对值将为 2
,您可以轻松检查它,从而得到您想要的结果:
d = {'positive': 1, 'negative': -1, 'neutral': 0}
df.col.map(d).diff().abs().eq(2)
0 False
1 False
2 False
3 False
4 False
5 True
6 False
Name: col, dtype: bool
我是一名优秀的程序员,十分优秀!