2016-02-27 105 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