在groupby数据框上获取不同的单词

2024-06-09 00:19:44 发布

您现在位置:Python中文网/ 问答频道 /正文

如何根据另一列的分组得到一列的不同单词

我需要得到不同的colB词为每个可乐的价值

我的数据帧:

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

所需数据帧(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值,但是对于我拥有的大数据帧,这需要相当长的时间。有什么建议吗?你知道吗


Tags: 数据citydfusdf2abcsanlondon
2条回答

我们可以使用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

用途:

  • ^{}并选择colB
  • ^{}由空格到DataFrame
  • 重塑^{}Series
  • ^{}表示来自index的列
  • ^{}

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

相关问题 更多 >