我试图在数据帧中生成第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}$我不知道该怎么解决。我发现了一些类似的东西,但我不认为它适用于我。我试图追踪海洋温度/洋流。在
我也经历过这个错误。结果是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个元素(当})时,不是6个元素。可能,在第一行
get_q6
返回[1,2,3,4,5]
)要么只有1个(当get_q6
返回{get_q6 returns
[None]. So the shape of the returned array is calculated as
passed=(5,1)`。在最后,
implied==passed
计算为false并抛出一个错误。在相关问题 更多 >
编程相关推荐