【问题标题】:How to find list of cell data value at a specific cell positions?如何在特定单元格位置查找单元格数据值列表?
【发布时间】: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


【解决方案1】:

您可以简单地通过附加来获取您的列表:

B = []
for i in row:
    for c in col:
        B.append(df.at[i,c])

您还可以将列表转换为 numpy 数组,并为此调用一行:

B = df.to_numpy()[demData>0]

【讨论】:

  • 谢谢!将值附加到列表中会在我要查找的值之间返回一些零。更像B = df.to_numpy()[demData>0] 给了我我需要的东西:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2021-10-28
  • 1970-01-01
  • 2013-09-21
相关资源
最近更新 更多