【发布时间】:2020-07-02 04:27:45
【问题描述】:
我有下一个代码来选择给定条件下的单元格位置。这是来自光栅。如您所见,我为此使用 NumPy 和 Pandas:
f = np.column_stack(np.where(demData>0))
当我打印 f 时,我得到这样的结果:
print(f)
[[ 0 89]
[ 0 90]
[ 0 91]
[ 1 90]
[ 1 91]
[ 1 92]
[ 1 93]
[ 2 92]
[ 2 93]]
现在有了这个先前的结果,我想获得的是该单元格位置的数据值。例如:
df = pd.DataFrame(demDataStage)
df.at[1,93]
结果:
618.965
我想到了类似下一个代码的东西,但我只得到一个值(最后一个对应于 f 中的最后一个单元格),而不是一个数组。结果 B 是一个 NumPy 数组,但显示的是一个数字:
row = f[:,0]
col = f[:,1]
for i in row:
for c in col:
B = df.at[i,c]
print(B)
720.123
如您所见,它不是一个列表或数组,它从每行的栅格中返回单元格的数据值,col 单元格位置。我有超过 200 列和行,所以使用类似于我上面显示的内容更容易,但我还没有找到方法。任何建议都非常感谢,谢谢!
【问题讨论】:
-
你不能用
demData[np.where(demData)]吗? -
关于你的问题,你得到一个标量,因为通过
B=df.at[i,c]你删除了以前的值。如果你想要一个列表,在进入 FOR 循环之前将B=[]初始化为一个空列表。然后使用B.append(df.at[i,c])将元素添加到循环中的列表中。 -
谢谢bousof,很有帮助! ;)
标签: python arrays pandas numpy cell