リットルデジタル標高マップ、TIFFファイルを有し、Gdal
モジュールとpandas
を使用して、すべてのデータがdem.xlsx
で書かれたファイルをエクセル、私の目的は、1
で各行の最大値を交換することで、他の正の新しいセットで選択データを交換します値は0
、負の値は-9999
とし、結果を新しいExcelに書き込みます。しかし、私は値を置き換えて新しいExcelに書き込むことができませんでした。パンダは、
import pandas as pd
import xlrd
import xlsxwriter
import gdal
layer = gdal.Open(r"C:/Users/owrasa/PycharmProjects/den/dem/dem.tif")
arr=layer.ReadAsArray()
df=pd.DataFrame(arr)
writer1 = pd.ExcelWriter(
'dem.xlsx', engine='xlsxwriter')
df.to_excel(writer1, 'Sheet1')
writer1.save()
df=pd.read_excel("dem.xlsx")
writer2 = pd.ExcelWriter('output.xlsx',engine='xlsxwriter')
for i in df:
for a in range(2851):
if i>0 and i<df.ix[a].max():
df.replace(i,0)
elif i==df.ix[a].max():
df.replace(i,1)
else:
df.replace(i,-9999)
df.to_excel(writer2, 'Sheet1')
writer2.save()
DEMファイルは2098行のx 2851列を持つエクセル:
は、ここに私のコードです。
== '0'のx/x.max() ''場合x.max()に起こるのだろうか? – MaxU
私はあなたのコードを試しましたが、いくつかの行に2つ以上の最大値があるので、結果は満足のいくものではありません。 –
@MaxU Oups、私はそれがバグだと思います、この場合は 'nan'を生成します。 @ömersarı元のデータセットに等しい最大値を持つ行の場合に期待されることは理解できません。どのようにしてそれらの間で選択できますか? MaxUが提供する答えを使うべきだと思います。 – Romain