Pandas 如果组大小大于1,则筛选数据帧
具有以下分组的数据帧:Pandas 如果组大小大于1,则筛选数据帧,pandas,dataframe,aggregate,Pandas,Dataframe,Aggregate,具有以下分组的数据帧: df = pd.DataFrame({ 'geonameid': ['1814991', '1814991', '3508796', '3508796', '3017382', '2017370', '2017370'], 'isolanguage': ['de', 'de', 'de', 'de', 'de', 'de', 'de'], 'alternate_name': ['China', 'Volksrepublik China', 'Do
df = pd.DataFrame({
'geonameid': ['1814991', '1814991', '3508796', '3508796', '3017382', '2017370', '2017370'],
'isolanguage': ['de', 'de', 'de', 'de', 'de', 'de', 'de'],
'alternate_name': ['China', 'Volksrepublik China', 'Dominikanische Republik', 'Dom. Republik', 'Frankreich', 'Russische Föderation', 'Russland'],
'isPreferredName': ['', '', '1', '', '', '', '1'],
'isShortName': ['1', '', '', '1', '', '', '']
})
grouped = df.groupby(['geonameid', 'isolanguage'])
如何执行以下聚合逻辑(具有相同的输出结构):
isPrefferdName
isShortName
df = df.groupby(['geonameid', 'isolanguage']).agg(
{ 'alternate_name': lambda series: list(series)[0] })
首选输出:中国、多米尼加共和国、法兰克福、俄罗斯
谢谢你的帮助 IIUC仅对
isPrefferdName
和isShortName
进行排序:
print (df.sort_values(["isPreferredName", "isShortName"], ascending=False)
.groupby(['geonameid', 'isolanguage'])["alternate_name"].first())
geonameid isolanguage
1814991 de China
2017370 de Russland
3017382 de Frankreich
3508796 de Dominikanische Republik