bugfix> python-3.x > 投稿

サンプルデータは次のとおりです。

Time,RangeGreen,RangeRed,DistanceGreenRed,SlopeGreen,SlopeRed,PreviousCandleColor,CurrentCandleColor
2018.04.02 00:01:01,30-40,20-30,14.42241040084485,0.002837507264410963,-0.002233901393132696,Green,indecisive
2018.04.02 00:03:06,40-50,30-40,9.228956001044772,3.969502900848433,7.203315124348411,Green,indecisive
2018.04.02 00:04:06,10-20,30-40,-13.69498672180752,-19.36590965829607,-2.850639197642629,Red,indecisive

私は CurrentCandleColor を交換したいと思います PreviousCandleColor の値しかし、 CurrentCandleColor の0番目の値 PreviousCandleColor の最初の値である必要があります 。

したがって、私の最終的な値は次のとおりです。

Time,RangeGreen,RangeRed,DistanceGreenRed,SlopeGreen,SlopeRed,PreviousCandleColor,CurrentCandleColor
2018.04.02 00:01:01,30-40,20-30,14.42241040084485,0.002837507264410963,-0.002233901393132696,Green,Green
2018.04.02 00:03:06,40-50,30-40,9.228956001044772,3.969502900848433,7.203315124348411,Green,Red
2018.04.02 00:04:06,10-20,30-40,-13.69498672180752,-19.36590965829607,-2.850639197642629,Red,indecisive

私はこのようにいくらか動かそうとしました。

df['CurrentCandleColor'] = df[1:'PreviousCandleColor']

しかし、私は次のエラーを受け取りました:

TypeError: cannot do slice indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [PreviousCandleColor] of <class 'str'>  

親切に、私を助けてください。

回答 1 件
  • shift を使用する   fillna と   NaNs がない場合  ここに:

    a = df.loc[df.index[-1], 'CurrentCandleColor']
    df['CurrentCandleColor'] = df['PreviousCandleColor'].shift(-1).fillna(a)
    print (df)
                      Time        ...         CurrentCandleColor
    0  2018.04.02 00:01:01        ...                      Green
    1  2018.04.02 00:03:06        ...                        Red
    2  2018.04.02 00:04:06        ...                 indecisive
    [3 rows x 8 columns]
    
    

    または:

    df['CurrentCandleColor'] =df['PreviousCandleColor'].shift(-1).fillna(df['CurrentCandleColor'])
    
    

    可能であれば NaN s値は最初に列の最後の値を取得し、次に元に戻します。

    last = df['CurrentCandleColor'].values[-1]
    df['CurrentCandleColor'] = df['PreviousCandleColor'].shift(-1)
    df.loc[df.index[-1], 'CurrentCandleColor'] = last
    
    

あなたの答え