gpt4 book ai didi

python - datetime64 已过四分之一

转载 作者:行者123 更新时间:2023-11-28 22:34:45 25 4
gpt4 key购买 nike

我有一个看起来像这样的 pd.DataFrame:

In [119]: df1
Out[119]:
DATES
0 2014-01-01
1 2014-01-24
2 2014-03-11
3 2014-04-09
4 2014-04-21
5 2014-05-02
6 2014-05-13
7 2014-06-11
8 2014-06-21
9 2014-07-22
10 2014-08-04

In [120]: df1.dtypes
Out[120]:
DATES datetime64[ns]
dtype: object

我想计算每个条目所属的季度。到目前为止我尝试过的是:

df1['QUARTER'] = df1['DATES'].map(lambda x: '2014Q1' if (x.year == 2014 & (x.month == 1 | x.month == 2 | x.month == 3)) else np.nan)

然后我得到:

In [124]: df1
Out[124]:
DATES QUARTER
0 2014-01-01 NaN
1 2014-01-24 NaN
2 2014-03-11 NaN
3 2014-04-09 NaN
4 2014-04-21 NaN
5 2014-05-02 NaN
6 2014-05-13 NaN
7 2014-06-11 NaN
8 2014-06-21 NaN
9 2014-07-22 NaN
10 2014-08-04 NaN

最后,我试过了:

df1['QUARTER'] = df1['DATES'].map(lambda x: x.year + '-Q' + x.quarter)

然后我得到一个错误:

TypeError:+ 不支持的操作数类型:“int”和“str”

感谢任何想法,谢谢!

最佳答案

In [30]: df['QUARTER'] = pd.PeriodIndex(df['DATES'], freq='Q')

In [31]: df
Out[31]:
DATES QUARTER
0 2014-01-01 2014Q1
1 2014-01-24 2014Q1
2 2014-03-11 2014Q1
3 2014-04-09 2014Q2
4 2014-04-21 2014Q2
5 2014-05-02 2014Q2
6 2014-05-13 2014Q2
7 2014-06-11 2014Q2
8 2014-06-21 2014Q2
9 2014-07-22 2014Q3
10 2014-08-04 2014Q3

df['QUARTER'] 中的值是 Periods。如果您想要字符串,请使用

df['QUARTER'] = pd.PeriodIndex(df['DATES'], freq='Q').format()

顺便说一句,也可以通过添加字符串和字符串值系列来构建所需的结果:

In [59]: df['DATES'].dt.year.astype(str) + 'Q' + df['DATES'].dt.quarter.astype(str)
Out[59]:
0 2014Q1
1 2014Q1
2 2014Q1
3 2014Q2
4 2014Q2
5 2014Q2
6 2014Q2
7 2014Q2
8 2014Q2
9 2014Q3
10 2014Q3
Name: DATES, dtype: object

这可能对您将来有用,但在这种情况下您无需亲自动手。

关于python - datetime64 已过四分之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38763766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com