我正在尝试使用这个Python脚本合并重复的行。我将一个列用逗号分隔,然后对其余部分求和,最后使用pandas删除重复项,但是我需要排除一些行不被求和。例如,我不想对poly_area和total_area进行求和。我该怎么做?
import pandas as pd
output = 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)
df2 = df.groupby(["FID","total_area","POLY_AREA"]).sum()
ValueError: len(left_on)必须等于“right”索引中的级别数。 - Jose Vasquezdf2_cols = list(set(fieldlist) - set(['FID', 'total_area', 'POLY_AREA']))
,以避免循环,但它可能会重新排序你的列,因为集合不保留顺序。请参考此答案,了解如何获取不在另一个列表中的子列表。 - Leo