python pandas ...在pandas中替代iterrows获取下一行值(NEW)

时间:2016-02-27 13:24:23

标签: python pandas apply next

我在pandas中有一个df

将pandas导入为pd

import pandas as pd df = pd.DataFrame(['AA', 'BB', 'CC'], columns = ['value'])

我想迭代df中的行。对于每一行,我想要行值和下一行值。

这是理想的结果。

0 1 AA BB 1 2 BB CC

我尝试过使用itertools的pairwise()函数。

from itertools import tee, izip def pairwise(iterable): "s -> (s0,s1), (s1,s2), (s2, s3), ..." a, b = tee(iterable) next(b, None) return izip(a, b) import pandas as pd df = pd.DataFrame(['AA', 'BB', 'CC'], columns = ['value']) for (i1, row1), (i2, row2) in pairwise(df.iterrows()): print i1, i2, row1["value"], row2["value"]

但是,它太慢了。知道如何用iterrows实现输出吗?我想尝试使用pd.apply获取大型数据集。

2 个答案:

答案 0 :(得分:2)

你可以简单地shift,然后使用dropna扔出最后一行:

df['next_value'] = df.value.shift(-1)
df.dropna(inplace=True)
>>> df
        value   next_value
0          AA           BB
1          BB           CC

答案 1 :(得分:0)

虽然它不是最“花哨”的方式 - 我只会使用数字迭代器并访问行i和i + 1