在类内分配给Pandas DataFrame将得到TypeE

2024-05-18 05:37:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在对类中的数据帧进行计算:

数据帧如下所示:

            JIBA3M  Year Month Day Day_b   MonthBegin
2014-01-01  0.05216 2014    1   1   1   2014-01-01 00:00:00
2014-01-02  0.05216 2014    1   2   1   2014-01-01 00:00:00
2014-01-03  0.05225 2014    1   3   1   2014-01-01 00:00:00
2014-01-04  0.05225 2014    1   4   1   2014-01-01 00:00:00
2014-01-05  0.05225 2014    1   5   1   2014-01-01 00:00:00

在ipython笔记本的课堂之外,以下内容可以互换使用:

^{pr2}$

如果我从类的init方法中尝试代码,则 方法给出错误:

TypeError: ('integer argument expected, got float', u'occurred at index 2014-01-01 00:00:00')

我已经检查过了,apply lambda部分给出了预期的结果,如果我debug print的话。 问题似乎是将apply lambda构造分配回DataFrame。在

有什么想法吗?在


Tags: 数据方法lambda代码initipython笔记本year
1条回答
网友
1楼 · 发布于 2024-05-18 05:37:30

您可以通过转换来确保这些是int:

df['MonthBegin'] = df.apply(lambda x: datetime.datetime(int(x.Year), int(x.Month), 1), axis=1)

或者潜在地转换每个列以确保它是int64(而不是float):

^{pr2}$

注意:可能有一些nan导致了这个浮动向上投射,在这种情况下,您可能需要重新考虑您的方法(因为您无法转换为int!),一个选项可能是先格式化字符串,然后应用to_datetime

df['Date'] = df.Year + '-' + df.Month + '-' + '01'
df['Date'] = pd.to_datetime(df['Date'])

相关问题 更多 >