【问题标题】:Get distinct words on groupby Pandas dataframe在 groupby Pandas 数据框中获取不同的单词
【发布时间】:2018-03-15 12:20:09
【问题描述】:

如何根据另一列的 group by 获取一列的不同单词

我需要为每个 colA 值获取不同的 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 值,但对于我拥有的大型数据框,这需要相当长的时间。有什么建议吗?

【问题讨论】:

  • 使用df = df.drop_duplicates()df = df.drop_duplicates(['col A','colB'])
  • 使用 df1=df.unique() 将返回唯一值。
  • @jezrael:我需要不同的单词(用空格分隔)而不是不同的 colB 值。第一次不是很清楚
  • @msksantosh - 好的,所以重新打开并添加了解决方案。
  • @jezrael:我在编辑下添加了一个跟进:在问题中。有什么建议吗?

标签: python pandas group-by


【解决方案1】:

用途:


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

【讨论】:

    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2013-09-27
      • 2017-04-28
      • 2023-01-23
      • 2018-01-29
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      相关资源
      最近更新 更多