在groupby Pandas数据框

时间:2018-03-15 12:20:10

标签: python pandas group-by

如何根据另一列的分组获取列的不同单词

我需要为每个colA值获取不同的colB单词

我的数据框:

colA     colB
US       California City
US       San Jose ABC
UK       London 123
US       California ZZZ
UK       Manchester
UK       London

Reqd dataframe(df):

col A    colB
US       California
US       City
US       ABC
US       ZZZ
US       San
US       Jose
UK       London
UK       123
UK       Manchester

编辑:

感谢@jezrael,我能够获得所需的数据框

我有另一个数据帧(df2)

ColC        ColA      ColB
C1          US        California
C1          US        ABC
C2          UK        LONDON

对于列(colC)的每个值,我需要colB字符串与先前获得的数据帧的交集。

必需:

ColC     n(df2_colBuniq)    n(df_df2_intersec_colB)
C1       2               2
C2       1               1

我尝试循环遍历每个唯一的colC值,但对于我拥有的大数据帧,它需要相当长的时间。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

使用:

df = (df.set_index('colA')['colB']
        .str.split(expand=True)
        .stack()
        .reset_index(level=1, drop=True)
        .reset_index(name='colB')
        .drop_duplicates()
       )
print (df)
  colA        colB
0   US  California
1   US        City
2   US         San
3   US        Jose
4   US         ABC
5   UK      London
6   UK         123
8   US         ZZZ
9   UK  Manchester

答案 1 :(得分:1)

我们可以使用get_dummies

df.set_index('colA').colB.str.get_dummies(sep=' ').sum(level=0).replace(0,np.nan).stack().reset_index()
Out[13]: 
  colA     level_1    0
0   US         ABC  1.0
1   US  California  2.0
2   US        City  1.0
3   US        Jose  1.0
4   US         San  1.0
5   US         ZZZ  1.0
6   UK         123  1.0
7   UK      London  2.0
8   UK  Manchester  1.0