我有以下代碼:
import arcpy
from arcpy import env
import pandas as pd
#setting workspace
env.workspace = r"C:\Users\4_projects\211104\Network.gdb"
env.overwriteOutput = True #existing output will be overwritten
buchs = r"buchs"
rows = arcpy.SearchCursor(buchs)
shapeName = arcpy.Describe(buchs).shapeFieldName
df1 = pd.DataFrame()
for row in rows:
feat = row.getValue(shapeName)
extent = feat.extent
df2 = pd.DataFrame({"XMin": [extent.XMin],
"YMin": [extent.YMin],
"XMax": [extent.XMax],
"YMax": [extent.YMax]})
df1.append(df2, ignore_index=True)
我的目標是row通過創建一個臨時 dfdf2并將其附加到df1. 所以df1應該逐行,每個條目的所有范圍。但是,我df1總是會導致一個空的 df。
任何幫助表示贊賞。如果需要其他資料,請告訴我如何最好地在此處共享 shapefile,謝謝。
uj5u.com熱心網友回復:
PandasDataFrame.append()必須分配給一個變數,否則它會附加另一個資料幀,但永遠不會分配它,并且一旦附加完成它就消失了,所以只需df1 = 在附加前添加:
df1 = df1.append(df2, ignore_index=True)
uj5u.com熱心網友回復:
與我上面的評論相關的可能解決方案:
data = []
for row in rows:
feat = row.getValue(shapeName)
extent = feat.extent
df2 = pd.DataFrame({"XMin": [extent.XMin],
"YMin": [extent.YMin],
"XMax": [extent.XMax],
"YMax": [extent.YMax]})
data.append(df2)
df1 = pd.concat(data, ignore_index=True)
uj5u.com熱心網友回復:
代替
df1.append(df2, ignore_index=True)
您可以使用
df1 = pd.concat([df1, df2])
如果所有列都匹配
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349870.html
下一篇:使用pd.DataFrame時出現AttributeError:module'pandas'hasnoattribute'DataFrame'
