如何对熊猫数据框中的列进行子串化

时间:2019-04-07 07:59:49

标签: python numpy dataframe

我在熊猫数据框YYYY和MM中有2列。我想像YYYYMM那样连接。但是问题是Mar'2019变成了20193,Oct'2019变成了201910。我不能基于这种输出进行排序。我希望所有月份都应有2位数,如3月月份应为03,4月则应为04。

如何正确连接它们?

df['YYYY']=df['Order_Date'].dt.year.astype(str)
df['MM']=df['Order_Date'].dt.month.astype(str)
df['YM'] = df.YYYY + df.MM #(this does not solve problem)
  

预计201903 201904 201910

实际 20193 20194 201910

1 个答案:

答案 0 :(得分:1)

使用Series.dt.strftime

df = pd.DataFrame({'Order_Date':pd.date_range('2019-01-01', periods=5 ,freq='m')})

df['YM'] = df['Order_Date'].dt.strftime('%Y%m')
print (df)
  Order_Date      YM
0 2019-01-31  201901
1 2019-02-28  201902
2 2019-03-31  201903
3 2019-04-30  201904
4 2019-05-31  201905

您的解决方案应与Series.str.zfill一起使用:

df['YM'] = (df['Order_Date'].dt.year.astype(str) + 
            df['Order_Date'].dt.month.astype(str).str.zfill(2))
print (df)
  Order_Date      YM
0 2019-01-31  201901
1 2019-02-28  201902
2 2019-03-31  201903
3 2019-04-30  201904
4 2019-05-31  201905