我有一个包含非结构化数据的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,所有列都是type对象。我试过.astype(str(,但仍然得到相同的错误
#混淆
一定是.split((创建了一个我没有正确寻址的数据类型?
具有非结构化数据的原始数据帧:
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的数据类型,您只能在列表中的索引中使用整数