python – 聚合pandas数据帧中的单元格/列
发布时间:2020-12-20 11:02:35 所属栏目:Python 来源:网络整理
导读:我有一个像这样的数据帧 Index Z1 Z2 Z3 Z4 0 A(Z1W1) A(Z2W1) A(Z3W1) B(Z4W2) 1 A(Z1W3) B(Z2W1) A(Z3W2) B(Z4W3) 2 B(Z1W1) A(Z3W4) B(Z4W4) 3 B(Z1W2) 我想把它转换成 Index Z1 Z2 Z3 Z4 0 A(Z1W1,Z1W3) A(Z2W1) A(Z3W1,Z3W2,Z3W4) B(Z4W2,Z4W3,Z4W4) 1
我有一个像这样的数据帧
Index Z1 Z2 Z3 Z4 0 A(Z1W1) A(Z2W1) A(Z3W1) B(Z4W2) 1 A(Z1W3) B(Z2W1) A(Z3W2) B(Z4W3) 2 B(Z1W1) A(Z3W4) B(Z4W4) 3 B(Z1W2) 我想把它转换成 Index Z1 Z2 Z3 Z4 0 A(Z1W1,Z1W3) A(Z2W1) A(Z3W1,Z3W2,Z3W4) B(Z4W2,Z4W3,Z4W4) 1 B(Z1W1,Z1W2) B(Z2W1) 基本上我想将不同单元格的值聚合到一个单元格,如上所示 编辑1 实际列名称是两个单词或3个单词的名称,而不是A B. 解决方法
事情越来越感兴趣: – )
s=df.stack().replace({'[(|)]':' '},regex=True).str.strip().str.split(' ',expand=True) v=('('+s.groupby([s.index.get_level_values(1),s[0]])[1].apply(','.join)+')').unstack().apply(lambda x : x.name+x.astype(str)).T v[~v.apply(lambda x : x.str.contains('None'))].apply(lambda x : sorted(x,key=pd.isnull)).reset_index(drop=True) Out[1865]: Z1 Z2 Z3 Z4 0 A(Z1W1,Z1W3) A(Z2W1) A(Z3W1,Z3W4) B(Z4W2,Z4W4) 1 B(Z1W1,Z1W2) B(Z2W1) NaN NaN 更新 #s=df.stack().replace({'[(|)]':' '},expand=True) 至 s=df.stack().str.split('(',expand=True) s[1]=s[1].replace({'[(|)]':' '},regex=True).str.strip() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |