2017-06-15 15 views
0

カラム "期間"の値を&に置き換えたい場合は、以下のように他の文字列を付けてください。pythonデータフレームの値を置き換え、別の文字列を条件と連結する方法

値:2017M12 Mはと交換 - および追加 '-01' 最終結果:2017年12月1日

Frequency,Time Period,Date 
3,2016M12 
3,2016M1 
3,2016M8 
3,2016M7 
3,2016M11 
3,2016M10 

dt['Date'] = dt.loc[dt['Frequency']=='3',replace('Time Period','M','-')]+'-01' 

答えて

0
In [18]: df.loc[df.Frequency==3,'Date'] = \ 
      pd.to_datetime(df.loc[df.Frequency==3, 'Time Period'], 
          format='%YM%m', errors='coerce') 

In [19]: df 
Out[19]: 
    Frequency Time Period  Date 
0   3  2016M12 2016-12-01 
1   3  2016M1 2016-01-01 
2   3  2016M8 2016-08-01 
3   3  2016M7 2016-07-01 
4   3  2016M11 2016-11-01 
5   3  2016M10 2016-10-01 

In [20]: df.dtypes 
Out[20]: 
Frequency    int64 
Time Period   object 
Date   datetime64[ns] # <--- NOTE 
dtype: object 
+0

ありがとうございました。 –

0

を使用できapply

dt['Date'] = dt[ dt['Frequency'] ==3]['Time Period'].apply(lambda x: x.replace('M','-')+"-01") 

出力

Frequency Time Period Date 
0 3   2016M12  2016-12-01 
1 3   2016M1  2016-1-01 
2 3   2016M8  2016-8-01 
3 3   2016M7  2016-7-01 
4 3   2016M11  2016-11-01 
5 3   2016M10  2016-10-01 

また、空の列「データ」を作成する必要はありません。 dt['Date'] =は自動的

+0

を、それを作成しますおかげで、私はどこにも同様の条件を使用します:[「周波数」] DT ==「3」ここであなたが行く –

+0

@linusを! – Tbaki

+0

エラー:SyntaxError:無効な構文dt ['Date'] = dt [dt ['期間'] == '3']] ['期間']適用します(ラムダx:x.replace( 'M' ' - ')+ ' - 01') –

関連する問題