问题描述
我有一个包含我的数据的 excel 文件。就是这个: enter image description here 在读取并将其存储在“数据”变量中后,我想将其分成 2 部分并将它们分配给不同的变量。我的意思是我想从我的数据输入中提取 2 个形状不一致的矩阵。 例如,如果我的数据是我放在这里的图片,我想要这两个: enter image description here 和 enter image description here 我使用了这个索引,但没有用。 这是代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
FilePath='E:\\# Civil Engineering graduate\\Projects\\Python\\RoutePlanning'
FileName='\\Data.xlsx'
Data=pd.read_excel(FilePath+FileName)
print(Data)
Points=np.array(Data[1:,0:3])
这是它通过的错误:
Exception has occurred: TypeError
'(slice(1,None,None),slice(0,3,None))' is an invalid key
File "E:\# Civil Engineering graduate\Projects\Python\RoutePlanning\RoutePlanning.py",line 9,in <module>
Points=np.array(Data[1:,0:3])
我见过一些解决方案为此使用了循环和函数定义,除非我必须…… 毫无疑问,我在这里建立索引时犯了一个错误,因为它不起作用。但我想知道这是否可以修复并投入使用,或者是否有任何类似解决方案的索引。 如果不是,那么性能最佳的解决方案是什么。
解决方法
这是因为 Data
是一个 Pandas DataFrame,而不是一个 numpy.ndarray
。
如果您使用 Data.to_numpy()[1:,0:3]
,它会起作用。
我想 Data
是一个数据框,您尝试使用标签位置进行切片。试试iloc
:
Points=np.array(Data.iloc[1:,0:3])
你可以得到你想要的 numpy 数组,如下所示:
points_left = Data.iloc[1:,:3].to_numpy()
points_right = Data.iloc[1:,3:].to_numpy()
,
谢谢大家。 这个效果很好。但现在是 NaN!
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
FilePath='E:\\# Civil Engineering graduate\\Projects\\Python\\RoutePlanning'
FileName='\\Data.xlsx'
Data=pd.read_excel(FilePath+FileName)
Data=np.array(Data)
print(Data)
Points=np.array(Data[:,0:4])
print(Points)
Obstacles=np.array(Data[:,4:9])
print(Obstacles)
我已经得到了我想要的数据: 数据=
[[ 1. 0. 0. 0. 1. 2. 2. 2. 1.]
[ 2. 5. 5. 5. nan nan nan nan nan]]
点数=
[[1. 0. 0. 0.]
[2. 5. 5. 5.]]
障碍=
[[ 1. 2. 2. 2. 1.]
[nan nan nan nan nan]]
现在需要做的就是删除 NaN。 有什么推荐吗?