我正在嘗試使用此Python腳本合并重復的行。我將一列用逗號分隔,然后將其余部分求和,最后使用熊貓刪除重復項,但是我需要從求和中排除一些行。例如,我不想將poly_area和total_area求和。我應該怎么辦?import pandas as pdoutput = r'C:dummy' fieldlist = ["FID","total_area","POLY_AREA", "PERCENTAGE","C5_3","M1_4","M1_4_R6A","M1_4_R6B", "M1_4_R7A", "M1_5_R10", "M1_5_R7_3","M1_5_R9","M1_6_R10","PARK","R6A", "R6B", "R7A"] #Create dataframe from cursor df = pd.DataFrame.from_records(data=arcpy.da.SearchCursor('calculations', fieldlist), columns = fieldlist) #Create a new dataframe of FIDS and comma-separated percentages df1 = df.groupby("FID")["PERCENTAGE"].apply(lambda x: ", ".join(x.astype(str))).reset_index() #Create a new dataframe of sums per FID df2 = df.groupby("FID").sum() df2.drop("PERCENTAGE", axis=1, inplace=True) #Merge/join them together and export as csv df1.merge(df2, left_on="FID", right_index=True).to_csv(path_or_buf=output, index=False)
2 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
這將完成您的工作,只需用它替換您所擁有的即可。
#Create a new dataframe of FIDS and comma-separated percentages
df1 = df.groupby(["FID","total_area","POLY_AREA"])["PERCENTAGE"].apply(lambda x: ", ".join(x.astype(str))).reset_index()
#Create a new dataframe of sums per FID
df2 = df.groupby("FID").sum()
df2.drop(["total_area","POLY_AREA","PERCENTAGE"], axis=1, inplace=True)

小怪獸愛吃肉
TA貢獻1852條經驗 獲得超1個贊
創建df2時,您可以嘗試獲取列的子集,以便排除不需要的內容。具體嘗試創建像這樣的df2:
df2_cols = [col for col in fieldlist if col not in ['FID', 'total_area', 'POLY_AREA']]
df2 = df.groupby("FID")[df2_cols].sum()
創建合并的df之后,您也可以刪除不需要的列。
添加回答
舉報
0/150
提交
取消