作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一列数据,例如 '1971q1'
、'1972q2'
等(年份后跟季度)当我这样做时:
print(type(df.Quarterly))
答案是系列
我需要的是将此列“转换”/转换为真正的 pd.Period 类型,这样我就可以用它做简单的时间代数。谢谢
最佳答案
您可以使用 pd.PeriodIndex()方法。
假设您有以下 DF:
In [517]: x
Out[517]:
str_col
0 1971q1
1 1971q2
2 1971q3
3 1971q4
4 1972q1
5 1972q2
6 1972q3
7 1972q4
In [518]: x.dtypes
Out[518]:
str_col object
dtype: object
让我们创建一个新的“period”列:
In [519]: x['period'] = pd.PeriodIndex(x.str_col, freq='Q')
In [520]: x
Out[520]:
str_col period
0 1971q1 1971Q1
1 1971q2 1971Q2
2 1971q3 1971Q3
3 1971q4 1971Q4
4 1972q1 1972Q1
5 1972q2 1972Q2
6 1972q3 1972Q3
7 1972q4 1972Q4
In [521]: x.dtypes
Out[521]:
str_col object
period object
dtype: object
现在我们可以做“时间代数”,例如让我们从每个周期中减去四分之一:
In [525]: x.period - 1
Out[525]:
0 1970Q4
1 1971Q1
2 1971Q2
3 1971Q3
4 1971Q4
5 1972Q1
6 1972Q2
7 1972Q3
Name: period, dtype: object
或者,您可以将 str_col
列转换为常规 Pandas/NumPy datetime
:
In [527]: pd.to_datetime(x.str_col, errors='coerce')
Out[527]:
0 1971-01-01
1 1971-04-01
2 1971-07-01
3 1971-10-01
4 1972-01-01
5 1972-04-01
6 1972-07-01
7 1972-10-01
Name: str_col, dtype: datetime64[ns]
关于python - 如何将 Period 字符串转换为实际的 Period 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40445076/
我是一名优秀的程序员,十分优秀!