如何在 CSV 中重新格式化日期以仅显示 MM/YYYY



使用Python 3 Pandas,花费了令人尴尬的时间试图弄清楚如何从CSV中获取一列日期,并仅使用MM/YYYY或YYYY/MM/01创建一个新列。

数据看起来像 Col1,但我正在尝试生成 Col2:

Col1        Col2
2/12/2017   2/1/2017
2/16/2017   2/1/2017
2/28/2017   2/1/2017
3/2/2017    3/1/2017
3/13/2017   3/1/2017

我能够解析年份和月份:

df['Month'] = pd.DatetimeIndex(df['File_Processed_Date']).month
df['Year'] = pd.DatetimeIndex(df['File_Processed_Date']).year
df['Period'] = df['Month'] + '/' + df['Year']

最后一行是错误的。 有没有一种聪明的 python 方法来只显示 2/2017?

收到错误:"类型错误:ufunc 'add' 不包含签名匹配类型 dtype(' 的循环

更新,由piRsquared回答:

d = pd.to_datetime(df.File_Processed_Date)
df['Period'] = d.dt.strftime('%m/1/%Y')

这将在数据帧中创建一个 pandas 列,该列将 Col1 成功转换为 Col2。 谢谢!

d只是'Col1'转换为Timestamp

d = pd.to_datetime(df.Col1)

然后

d.dt.strftime('%m/1/%Y')
0    02/1/2017
1    02/1/2017
2    02/1/2017
3    03/1/2017
4    03/1/2017
Name: Col1, dtype: object

​
d.dt.strftime('%m%Y')
0    02/2017
1    02/2017
2    02/2017
3    03/2017
4    03/2017
Name: Col1, dtype: object

d.dt.strftime('%Y/%m/01')
0    2017/02/01
1    2017/02/01
2    2017/02/01
3    2017/03/01
4    2017/03/01
Name: Col1, dtype: object

d - pd.offsets.MonthBegin()
0   2017-02-01
1   2017-02-01
2   2017-02-01
3   2017-03-01
4   2017-03-01
Name: Col1, dtype: datetime64[ns]

你要找的函数是strftime。

相关内容

  • 没有找到相关文章

最新更新