python-3.x - 对 pandas data.frame 的列应用函数会产生错误
问题描述
假设我在 pandas data.frame 下面 -
>>> Data
Col1 Col2
53 08.02.2020 2020-02-14
55 01.02.2020 2020-02-13
335 30.01.2020 2020-02-14
365 14.02.2020 2020-02-16
446 11.02.2020 2020-02-15
476 03.02.2020 2020-02-18
504 08.02.2020 2020-02-10
557 01.02.2020 2020-02-15
668 10.02.2020 2020-02-15
756 07.02.2020 2020-02-08
接下来,我有以下功能 -
is_ten_char = lambda x: x.str.len().eq(10)
但是,将此函数应用于列以检查字符数会产生错误 -
Data[is_ten_char(Data.Col1) & is_ten_char(Data.Col2)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/generic.py", line 5270, in __getattr__
return object.__getattribute__(self, name)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/accessor.py", line 187, in __get__
accessor_obj = self._accessor(obj)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/strings.py", line 2041, in __init__
self._inferred_dtype = self._validate(data)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/strings.py", line 2098, in _validate
raise AttributeError("Can only use .str accessor with string values!")
AttributeError: Can only use .str accessor with string values!
任何出现问题的指针都会非常有帮助。
解决方案
Col1
显然不是如图所示的日期时间格式Col2
可能是日期时间格式,因此要将其作为字符串进行比较,请执行以下操作
is_ten_char = lambda x: x.str.len().eq(10)
Data[is_ten_char(Data.Col1) & is_ten_char(Data.Col2.dt.strftime('%Y-%m-%d'))]
- 但是,这不会转换
Col2
为字符串print(Data['Col2'][53])
>>>Timestamp('2020-02-14 00:00:00')
- 如果要
Col2
转换为字符串Data.Col2 = Data.Col2.dt.strftime('%y-%m-%d')
- 然后使用原代码
推荐阅读
- c# - Net Core 2.2 MVC WebApi 中的 JWT“自我”身份验证
- java - 如何用通用方法替换这些 for 循环
- c++ - C++ 从递归函数中打印出奇怪的字符
- python - Python:为了测试目的而断开 Socket 管道连接的最简单方法?
- python - 如何在python中抓取隐藏类型的html
- three.js - 在 Three.js 中为 OrbitContorls 分配多个键
- mysql - 计算一列的总和并按具有相同值的列分组
- python - 查找字符串,提取值
- c# - 如何使用 Console.SetCursorPosition c# 绘制对角线?
- javascript - 添加键盘快捷键