Pandas:通过的指数形状不正确,不知道如何修复i

2024-10-02 10:29:26 发布

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

我试图在数据帧中生成第7列:

arb_ser_num       = 'zDfDD45'
predefined_number = 878

                 DATE                    Q1    Q2    Q3    Q4    Q5
0 2012-08-20 00:00:00   [Atlantic, Z, dEdd]  None  None  None  None 
1 2012-08-21 00:00:00    [Pacific, Y, dEdd]  None  None  None  None
2 2012-08-22 00:00:00     [Indian, Y, dRdd]  None  None  None  None
3 2012-08-23 00:00:00    [Meditar, Z, dEdd]  None  None  None  None
4 2012-08-24 00:00:00     [Arctic, Z, dRdd]  None  None  None  None


df['Q6'] = df.apply(lambda row: get_q6(arb_ser_num, row, predefined_number), axis = 1)

有时get_q6将返回[1,2,3,4,5],而其他时候则返回[None]。我一直收到错误:

^{pr2}$

我不知道该怎么解决。我发现了一些类似的东西,但我不认为它适用于我。我试图追踪海洋温度/洋流。在


Tags: 数据nonenumberdfgetdatenumser
2条回答

我也经历过这个错误。结果是pandas时间序列数据类型导致了这个问题。当我应用以epoch(或其他任何形式)表示的时间的函数时,如果将时间转换为pandas时间序列,就会出现这个错误。所以我的建议是在应用函数之后转换成时间序列,这显然是有条件的,你不需要你的时间变量在函数中被应用。在

*应用未经熊猫时间跨度测试的功能。在

溶液,TL;DR

使函数返回与原始数据帧中的列数相等的元素数。所以在本例中,让get_q6返回6个元素,这样返回的数组的第一行正好有6个元素。在

原因

查看熊猫源代码。在您的例子中,原始数据帧的形状是implied=(5,6)。因此Pandas中的internals.construction_error()试图验证应用函数get_q6后返回的数组是否具有相同的形状。在

在返回的数组中,当对每一行应用func时,有5行。现在要查找列,需要返回数组的第一个行。如果get_q6有6个元素,那么它将验证它们是否都具有(5,6)的形状。在

但是在您的例子中,返回的数组要么有5个元素(当get_q6返回[1,2,3,4,5])要么只有1个(当get_q6返回{})时,不是6个元素。可能,在第一行get_q6 returns[None]. So the shape of the returned array is calculated aspassed=(5,1)`。在

最后,implied==passed计算为false并抛出一个错误。在

相关问题 更多 >

    热门问题