【问题标题】:Python 3: Create raster with pixel values sourced from a pandas dataframePython 3:使用来自 pandas 数据框的像素值创建栅格
【发布时间】:2020-04-14 04:12:01
【问题描述】:

我需要创建一个 328 x 238(行 x 列)的栅格,其中选择的像素/单元格值是从给定的 pandas 数据框 (df) 中填充的。 df 中的每一行都包含一个名称(不重要)、行号、列号和对应于 328 x 238 光栅单元中的一些(不是全部)的像素值。如果不存在单元格值,则像素值需要为“NaN”或为空。我是 python 新手,正在努力找出实现最终目标的最佳方法。首先想到的是遍历df中的每一行以提取行/列位置以及每个像素应该填充的值(如果df中存在一个)。

作为第一步,我正在考虑创建一个 328 x 238 numpy 数组的 NaN 值:

array = np.full((328, 238), 'NaN')

然后我想我可以使用一个 for 循环来用来自 df 的值填充数组。 但是,我仍在努力理解如何设置一个 for 循环,该循环将逐行读取 df 并在每个列出的行/列位置使用 df 中的特定值填充数组。

for row, col in array:
    array.append[df['row', 'column'], 'value']

这个 for 循环显然不起作用,但我不知道如何从 df 中获取该“值”并在该特定“行”和“列”位置填充数组。任何帮助指导我找到实现栅格最终目标的最佳路线将不胜感激。

【问题讨论】:

    标签: python pandas dataframe raster


    【解决方案1】:

    您可以使用 df.iterrows 遍历数据框的行

    for index, row in df.iterrows():
         array[row['row_number'], row['column_number']] = row['value']
    

    【讨论】:

    • 嗨@Mekhi,你的方法有效,然后我已经能够导出一个csv文件,但由于某种原因,浮点值要么四舍五入到零或小数点后一位。知道如何改变吗?
    • 没关系,我想通了。当我将数组初始化为浮点数时,我只需要设置数据类型。感谢您的帮助!
    猜你喜欢
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 2020-12-05
    相关资源
    最近更新 更多