繁体   English   中英

熊猫df.apply TypeError数据类型不了解

[英]pandas df.apply TypeError data type not understood

我正在尝试对日期时间序列中的每个值应用运算。 我将其简化为lambda打印以说明问题。 这适用于另一个类似的数据框,但不适用于该数据框吗? Python是3.5.1版,pandas是0.17.1版。

还有一些填充可以满足SO问题的详细程度要求。

print(dfY.info())
print(dfY)
dfY.apply(lambda rr: print(rr['predicted_time']), 1)

产量

<class 'pandas.core.frame.DataFrame'>
Int64Index: 21 entries, 0 to 20
Data columns (total 1 columns):
predicted_time    21 non-null datetime64[ns, pytz.FixedOffset(60)]
dtypes: datetime64[ns, pytz.FixedOffset(60)](1)
memory usage: 336.0 bytes
None
              predicted_time
0  2005-02-01 02:40:00+01:00
1  2005-02-01 02:40:00+01:00
2  2005-02-01 02:40:00+01:00
3  2005-02-01 02:40:00+01:00
4  2005-02-01 02:43:00+01:00
5  2005-02-01 02:43:00+01:00
6  2005-02-01 02:43:00+01:00
<snip>
19 2005-02-01 02:50:00+01:00
20 2005-02-01 02:50:00+01:00

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-43-8ae0cf570812> in <module>()
      1 print(dfY.info())
      2 print(dfY)
----> 3 dfY.apply(lambda rr: print(rr['predicted_time']), 1)

/.../Projects/Software/TimeTillComplete/venv/lib/python3.5/site-packages/pandas/core/frame.py in apply(self, func, axis, broadcast, raw, reduce, args, **kwds)
   3970                     if reduce is None:
   3971                         reduce = True
-> 3972                     return self._apply_standard(f, axis, reduce=reduce)
   3973             else:
   3974                 return self._apply_broadcast(f, axis)

/.../Projects/Software/TimeTillComplete/venv/lib/python3.5/site-packages/pandas/core/frame.py in _apply_standard(self, func, axis, ignore_failures, reduce)
   4017             # Create a dummy Series from an empty array
   4018             index = self._get_axis(axis)
-> 4019             empty_arr = np.empty(len(index), dtype=values.dtype)
   4020             dummy = Series(empty_arr, index=self._get_axis(axis),
   4021                            dtype=values.dtype)

TypeError: data type not understood

我真的不知道发生了什么,但是作为一种解决方法,您可以在列上调用apply()获得预期的输出:

dfY['predicted_time'].apply(lambda rr: print(rr))

编辑好像您遇到了一个熊猫中的错误。 通过在数据帧中使用时区感知时间戳来触发此问题。 如上所示,使用系列作品。 使用朴素的时间戳也可以:

df = pd.DataFrame(pd.Series(dfY['predicted_time'].values),
                  columns=['predicted_time'])
df.apply(lambda rr: print(rr['predicted_time']), 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM