2016-02-27 79 views
1

我有熊猫一个DF蟒蛇熊猫...替代iterrows在大熊猫得到下一行的值(NEW)

进口大熊猫作为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。

+0

为什么你想要成对的行?我相信这个问题是一个更大问题的症状。你究竟在努力实现什么? – Alexander

+0

无论如何要使用pd.apply函数? –

回答

2

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

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

'df.set_index(df.index + 1,append = True,inplace = True)'来完成索引。 –

+0

啊,谢谢,@ B.M。 - 没有发现索引的东西。 –

0

虽然它不是最“花哨”的方式 - 我只想用一个数字迭代器和接入线i和i + 1