如何在Pandas 0.24.2中将offsets.MonthEnd系列转换为int

时间:2019-05-04 02:11:07

标签: python pandas

我计算类型为pd.Period的两列之间的增量。在0.24之前,它将返回一个int类型,但在0.24中将不再返回,它将返回一系列类似的值:1 * MonthEnds,2 * MonthEnds,……我想将其转换为int类型。

我可以使用Apply来实现这一点,例如

df.apply(lambda x: x['z'].n)

((df['x'] - df['y']) / np.timedelta64(1, 'M')).round()

但是我想知道是否还有其他解决方法。

df = pd.DataFrame({'x':pd.date_range(start='2001-01-01', periods=10), 'y':pd.date_range(start='2002-01-01', periods=10)})

在Pandas 0.24之前,以下代码将返回int类型的列

df['z'] = df['x'].dt.to_period('M') - df['y'].dt.to_period('M')

但是0.24更改了返回类型,如上所述,仍然有两种方法可以返回int列,但是我想知道是否还有其他方法可以实现此目的。

2 个答案:

答案 0 :(得分:0)

一种方法是良好的旧列表理解:

<td>{{user.role.role_title}}</td> //does NOT work, should display 'TestTitle'

答案 1 :(得分:0)

使用astype将返回int而不是DateOffset对象:

df['x'].dt.to_period('M').astype(int) - df['y'].dt.to_period('M').astype(int)

0   -12
1   -12
2   -12
3   -12
4   -12
5   -12
6   -12
7   -12
8   -12
9   -12
dtype: int64