Python中類似於GROUP_CONCAT的操作

import pandas as pd
'''
df
zq	area	province
北一戰區	北京區	北京
北一戰區	華北區	河北
北一戰區	華北區	天津
北一戰區	東北區	黑龍江
北一戰區	東北區	吉林
'''
def group_concat(df):
    df['province'] = ','.join(set(df['province']))
    return df.drop_duplicates()#注意這裏需要做一下去重
    
df.groupby(['zq','area'],group_keys=False,sort=False).apply(group_concat)
# 注意這裏需要設置group_keys=False
'''
zq	area	province
北一戰區	北京區	北京
北一戰區	華北區	河北,天津
北一戰區	東北區	黑龍江,遼寧,吉林
北二戰區	晉蒙區	內蒙古,山西
北二戰區	陝寧區	陝西,寧夏
北二戰區	甘青新區	青海,新疆,甘肅
東一戰區	河南區	河南
東一戰區	山東區	山東
東二戰區	蘇滬區	江蘇,上海
東二戰區	浙皖區	浙江,安徽
南一戰區	華南區	廣西,海南,廣東
'''

上述結果的反向操作

'''
df
zq	area	province
北一戰區	北京區	北京
北一戰區	華北區	河北,天津
北一戰區	東北區	黑龍江,遼寧,吉林
北二戰區	晉蒙區	內蒙古,山西
北二戰區	陝寧區	陝西,寧夏
北二戰區	甘青新區	青海,新疆,甘肅
東一戰區	河南區	河南
東一戰區	山東區	山東
東二戰區	蘇滬區	江蘇,上海
東二戰區	浙皖區	浙江,安徽
南一戰區	華南區	廣西,海南,廣東
'''
df['province'].str.split(',',expand=True).stack().\
reset_index().set_index('level_0').drop('level_1',1).rename(columns={0:'province'}).\
join(df.drop('province',1))

'''
province	zq	area
北京	北一戰區	北京區
河北	北一戰區	華北區
天津	北一戰區	華北區
黑龍江	北一戰區	東北區
遼寧	北一戰區	東北區
吉林	北一戰區	東北區
'''
df.drop('province',1).join(df['province'].str.split(',',expand=True).stack().\
reset_index().set_index('level_0').drop('level_1',1).rename(columns={0:'province'}))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章