为了账号安全,请及时绑定邮箱和手机立即绑定

在Pandas_Python中合并求和和排除

在Pandas_Python中合并求和和排除

料青山看我应如是 2021-03-31 09:15:30
我正在尝试使用此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)


查看完整回答
反对 回复 2021-04-13
?
小怪兽爱吃肉

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之后,您也可以删除不需要的列。


查看完整回答
反对 回复 2021-04-13
  • 2 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号