python - Pandas 要求我将列设为字符串,但我不能
问题描述
我正在尝试将 pandas 列转换为字符串以便使用str.extract()
.
当我运行时print(data.dtypes)
,这就是我所看到的:
:Address Line 1: object
:City: object
Address Line 2: object
Case Initiation Date: object
Case Number: object
Case Status: object
Defendants object
Demand Amount: object
Motion Status object
Zip: object
6 object
dtype: object
我正在尝试data['Motion Status']
使用正则表达式拆分变量,但遇到了障碍。首先,快速浏览一下data['Motion Status']
:
0 b'01/31/202008:30155'
1 b'02/03/202008:30155'
2 b'02/03/202008:30155'
3 b'02/04/202008:30155'
4 b'02/04/202008:30155'
Name: Motion Status, dtype: object
您会注意到它的格式为 dd/mm/yyyy + hh:mm + 3 位数字。这是我一直用来尝试从时间中解析出日期的代码(我会在它工作后执行“155”):
data['Motion Status (date)'] = data['Motion Status'].str.extract('\d{2}\/\d{2}\/\d{4}', expand=True)
当我运行它时,它返回错误TypeError: Cannot use .str.extract with values of inferred dtype 'bytes'.
我已经尝试了四种不同的解决方案,但它们都没有奏效(当我重新运行该str.extract
行时返回与上面相同的错误消息):
data['Motion Status'] = data['Motion Status'].astype('|S')
data['Motion Status'] = data['Motion Status'].astype('str')
data['Motion Status'] = data['Motion Status'].astype(str)
data.astype(str)['Motion Status'].map(lambda x: type(x))
有谁可以帮我离开这里吗?我真的不喜欢将此变量转换为字符串。我只想能够解析出日期、时间和最后的“155”(顺便说一下,它并不总是“155”——仅在前 20 行左右)。
任何帮助,将不胜感激!
更新:
我现在可以运行这行代码data['Motion Status (date)'], data['Time'], data['Other'] = data['Motion Status'].str.extract('(\d{2})/(\d{2})/(\d{4})', expand=True)
并且它执行没有错误。老实说,我不知道我做了什么来让这个运行......但是,我现在遇到了一个稍微不同的问题,代码创建了三个新变量,但它们在所有行中都填充了零、一或二(而不是我希望得到的 data['Motion Status'] 字符串的部分。例如
Motion Status (date) Time Other
0 0 1 2
1 0 1 2
2 0 1 2
3 0 1 2
4 0 1 2
所以我并没有完全回到第一方,但我仍然无法解析出字符串的不同部分。
解决方案
您在列中有字节。decode
它首先使用str.decode
方法:
s
#0 b'02/03/202008:30155'
#1 b'02/03/202008:30155'
#2 b'02/04/202008:30155'
#3 b'02/04/202008:30155'
#dtype: object
s.str.decode('UTF-8').str.extract('(\d{2})/(\d{2})/(\d{4})', expand=True)
# 0 1 2
#0 02 03 2020
#1 02 03 2020
#2 02 04 2020
#3 02 04 2020
推荐阅读
- python - 在多个文件中编写同一行的简洁方法 - Python
- java - 检查 String 变量是否被修改,如果不是 Toast。但是吐司总是出现
- java - Java:生产者-消费者两个线程停止工作,冻结
- sql-server - 插入时如何将行值增加1
- fortran - 如何在这里修复不平衡的括号?
- string - 如何在powershell中剪切这些字符串中的子字符串?
- aws-lambda - 使用无服务器框架部署 lambda 函数时出错
- database - 如何解决 MongoDB 查询括号错误?
- java - 是否可以像 Spring 一样在 Dagger2 中按类类型获取 bean?
- c++ - 检查数字是否为素数的算法