2016-07-04 15 views
3

次の値を列に入れるには、の後にの文字列が一致しますか?パンダ:文字列一致後の列の次の値を取得

regex = 'ABC' 
row_match = df["column1"].str.match(regex, case=False) 

e.e.e.文字列ABCが見つかった場合は、同じ列の次の行の値を取得する方法は?

iterrowsで1つの行を繰り返してみましたが、動作させることができませんでした。

答えて

4

shiftを使用して次の値を取得できます。

>>> import pandas as pd 
>>> data = ['a', 'b', 'c', 'd', 'c', 'e'] 
>>> df = pd.DataFrame(data) 
>>> df 
    0 
0 a 
1 b 
2 c 
3 d 
4 c 
5 e 
>>> df[df[0].str.match('c').shift(1).fillna(False)] 
    0 
3 d 
5 e 

私は最初の行でNaNを交換するfillnaを使用:

ここ小さい例です。

+0

ありがとうございます - 私は私の解釈では、これがDataFrame内のすべての*インデックス値をシフトするのでしょうか?私は同じ列の次の値を取得している間、そのままの状態でDataFrameを保持したいと思います。 – Winterflags

+1

'df [0] .str.match( 'c')'で 'shift'を呼び出すので、実際にオフセットされる唯一の値は' match'結果に対応するブール値です。 DataFrame自体は変更されません。プロンプトで 'df [0] .str.match( 'c')'と 'df [0] .str.match( 'c')。shift(1)'と入力して、動作を理解してください。 – 3kt

関連する問題