如何替换python数据帧值并将另一个字符串与where条件连接起来

时间:2017-06-15 11:41:49

标签: python dataframe

我想替换列"时间段"价值观和附上其他字符串,如下所示。

价值:2017M12 M替换为 - 并添加' -01' 最终结果:2017-12-01

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'

2 个答案:

答案 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'] =会自动创建

答案 1 :(得分: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