代码之家  ›  专栏  ›  技术社区  ›  urschrei

对包含列表的Pandas列进行分组操作

  •  6
  • urschrei  · 技术社区  · 12 年前

    我有一个包含列的DataFrame, props ,其中包含字符串列表。

    理想情况下,我想按此列进行分组,但不出所料,当我这样做时会出现错误:

    TypeError: unhashable type: 'list'
    

    有没有合理的方法来重新安排我的DataFrame,这样我就可以使用这些值了?

    2 回复  |  直到 12 年前
        1
  •  13
  •   Matti Lyra    12 年前

    您可以将字符串列表转换为字符串元组。元组是可散列的,因为它们是不可变的。当然,这是假设您在创建后不需要添加到这些列表或从这些列表中删除。

        2
  •  6
  •   miku    12 年前

    您可以对列表使用不可变的对应项,这些列表是 tuples :

    >>> import pandas as pd
    >>> df = pd.DataFrame([[[1, 2], 'ab'], [[2, 3], 'bc']])
    >>> df.groupby(0).groups
    ...
    ... TypeError: unhashable type: 'list'
    

    你可以 apply 相应列上的转换:

    >>> df[0] = df[0].apply(tuple)
    >>> df.groupby(0).groups
    {(1, 2): [0], (2, 3): [1]}