Python 对重复项进行分组并通过Pandas组合字符串列
假设我有一个名为Python 对重复项进行分组并通过Pandas组合字符串列,python,pandas,group-by,Python,Pandas,Group By,假设我有一个名为示例的数据帧: city state school_lvl schl_name elem_name middle_name highschoo_name Orlando fl 1 Union Park Union Park Orlando fl 2 Legacy Legacy Orlando fl 3 Col
示例的数据帧:
city state school_lvl schl_name elem_name middle_name highschoo_name
Orlando fl 1 Union Park Union Park
Orlando fl 2 Legacy Legacy
Orlando fl 3 Colonial Colonial
其中,elem\u name
等列是使用school\u lvl
和schl\u name
上的if条件生成的
我想要的是
city state elem_name middle_name highschoo_name
Orlando fl Union Park Legacy Colonial
我该怎么做呢?因为没有聚合函数,所以它不是真正的群组?我非常感谢您对lambda函数的任何帮助用于向前和向后填充,然后用于前2列和后3列:
c = example.columns[:2].tolist() + example.columns[-3:].tolist()
print (c)
['city', 'state', 'elem_name', 'middle_name', 'highschoo_name']
df = example.groupby(['city', 'state']).apply(lambda x: x.ffill().bfill()).drop_duplicates(c)
print (df)
city state school_lvl schl_name elem_name middle_name \
0 Orlando fl 1 Union Park Union Park Legacy
highschoo_name
0 Colonial
如果要删除列,请先使用Simpler,然后按所有列删除重复项:
example = example.drop(['school_lvl','schl_name'], axis=1)
df = example.groupby(['city', 'state']).apply(lambda x: x.ffill().bfill()).drop_duplicates()
print (df)
city state elem_name middle_name highschoo_name
0 Orlando fl Union Park Legacy Colonial
@斯科特伯顿-是的,我添加了链接。好主意。首先感谢您的回复。不幸的是,第一个代码删除了除第一个和第二个代码之外的所有行,使数据帧保持不变。我已经用更多信息更新了这个问题,不幸的是,我遇到了以下错误AttributeError:“list”对象没有属性“columns”