如何解决在拆分非分隔文本字段后,pandas 数据框可更正数据类型
我有一个包含非结构化数据的 excel 文件。 1 列带有 4 条数据的文本,我将其导入到数据框中...某些数据可能与该列的预期不匹配
03/04/21 08:08:26 -> - 50.20
03/04/21 11:08:26 -> + 283.75
03/04/21 10:48:34 -> Scale Timeout
我可以.split(' ',expand=True)
获得 12 列。
0 1 2 3 4 5 6 7 8 9 10 11
0 03/04/21 08:08:26 -> - 50.20
1 03/04/21 08:28:26 -> - 50.20
这就像一个典型的数据帧,因为我复制 cols[0,4,8,11],重命名它们并复制到新的 df:
date time sign mass
0 03/04/21 08:08:26 - 50.20
1 03/04/21 08:28:26 - 50.20
2 03/04/21 08:48:26 - 50.15
现在事情向南……我什至不能print(df['date'])
出现错误: 只有整数标量数组可以转换为标量索引
我检查了 dtype,所有列都是类型对象。我试过 .astype(str),但仍然得到同样的错误
#困惑
一定是 .split() 创建了一个我没有正确寻址的 dtype?
解决方法
带有非结构化数据的原始数据框:
df:
col
0 03/04/21 08:08:26 -> - 50.20
1 03/04/21 11:08:26 -> + 283.75
2 03/04/21 10:48:34 -> - 50.15
然后在您的 df 上尝试以下操作:
df2 = pd.DataFrame(df.col.str.split().str.join(' ').str.split(' ').values.tolist(),columns=['date','time','symbol','sign','mass'])
df2:
date time symbol sign mass
0 03/04/21 08:08:26 -> - 50.20
1 03/04/21 11:08:26 -> + 283.75
2 03/04/21 10:48:34 -> - 50.15
df2 将所有不同的数据作为单独的列。现在您可以从 df2 中选择您需要的列。
print(df2['date'])
0 03/04/21
1 03/04/21
2 03/04/21
Name: date,dtype: object
我所做的是首先删除非结构化数据中所有额外的空格,并将它们替换为一个空格。然后我对该数据应用 split(' ')
以将其划分为所需的数据段。
当您复制到新的 df 时,它将是新的列表。
您必须使用 print(df[0]) 来打印日期。 df[1] 表示时间,df[2] 表示符号,df[3] 表示质量
只能将整数标量数组转换为标量索引
df 是一个列表对象,可以查看 df 的数据类型,列表中的索引只能使用整数
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。