比较Pandas DataFrame中的上一行值

jth359:
import pandas as pd
data={'col1':[1,3,3,1,2,3,2,2]}
df=pd.DataFrame(data,columns=['col1'])
print df


         col1  
    0     1          
    1     3          
    2     3          
    3     1          
    4     2          
    5     3          
    6     2          
    7     2          

我有以下Pandas DataFrame,我想创建另一列来比较col1的上一行,以查看它们是否相等。最好的方法是什么?就像下面的DataFrame。谢谢

    col1  match  
0     1   False     
1     3   False     
2     3   True     
3     1   False     
4     2   False     
5     3   False     
6     2   False     
7     2   True     
耶斯雷尔:

您需要eq使用shift

df['match'] = df.col1.eq(df.col1.shift())
print (df)
   col1  match
0     1  False
1     3  False
2     3   True
3     1  False
4     2  False
5     3  False
6     2  False
7     2   True

或改为eq使用==,但是在大型DataFrame中,它会稍微慢一些:

df['match'] = df.col1 == df.col1.shift()
print (df)
   col1  match
0     1  False
1     3  False
2     3   True
3     1  False
4     2  False
5     3  False
6     2  False
7     2   True

时间

import pandas as pd
data={'col1':[1,3,3,1,2,3,2,2]}
df=pd.DataFrame(data,columns=['col1'])
print (df)
#[80000 rows x 1 columns]
df = pd.concat([df]*10000).reset_index(drop=True)

df['match'] = df.col1 == df.col1.shift()
df['match1'] = df.col1.eq(df.col1.shift())
print (df)

In [208]: %timeit df.col1.eq(df.col1.shift())
The slowest run took 4.83 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 933 µs per loop

In [209]: %timeit df.col1 == df.col1.shift()
1000 loops, best of 3: 1 ms per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

比较Pandas Dataframe的列名

MySQL比较值与上一行

比较当前行值和上一行值

比较Spark中当前行和上一行的值

Pandas DataFrame-删除特定列中与上一行具有相同值的行

比较Pandas数据框中具有上百万行的行和上一行的最快方法

平均值函数,不包括Pandas DataFrame中每一行的值

获取pandas DataFrame中某一行的最大值的列名称

在pandas DataFrame中查找最接近值的第一行索引

如何在最后一行中以零值删除Pandas DataFrame列

比较Pandas数据框中一行中的列值

从Pandas列中的当前行值中减去上一行的值

Pandas数据框将列与一个值进行比较,然后将这一行和上一行放入另一数据框

如何将Pandas DataFrame中的值与上一行和上一列中的值进行比较?

如何在Pandas DataFrame中获得最小值不为零的第一行索引?

Pandas DataFrame行明智比较

如何比较CSV中的上一行与上一行?

比较mysql中的上一行

在一行上删除 Pandas DataFrame 中的多列

迭代列并将该列的每一行值与 Pandas 中另一列的值进行比较

如何从 Pandas DataFrame 计算一行上精确值的出现次数

如何使用pandas比较同一行中多列的单列值?

Pandas Dataframe:如何比较一行的两列中的值是否等于后续行的同一列中的值?

如何根据同一行上的另一个列值获取名称为 Pandas DataFrame 中的列的值?

Pandas Dataframe - 对列的每一行中的值列表进行排序

比较不同列中 Pandas DataFrame 中的前一行值

将 Pandas DataFrame 中的前一行值与 Condition 进行比较

比较 Pandas 中的数据

替换 pandas DataFrame 每一行中第一次出现的值