【问题标题】:How to find unique value in a DataFrame column type of object?如何在 DataFrame 列类型的对象中找到唯一值?
【发布时间】:2020-02-07 10:47:15
【问题描述】:
input_data = [np.array(['chicken', 'creamofchickensoup'], dtype=object), np.array(['stickscelery', 'Chicken', 'CreamofChickensoup', 'babycarrots', 'pepper'], dtype=object), np.array(['chicken', 'creamofchickensoup'], dtype=object)]

我想查找此列“input_data”的唯一值。如果使用 pandas.unique(),我收到了这个TypeError: unhashable type: 'numpy.ndarray'

pd.Series(input_data).value_counts()使用时,结果是

>>> pd.Series(input_data).value_counts()
[chicken, creamofchickensoup]                                       1
[stickscelery, Chicken, CreamofChickensoup, babycarrots, pepper]    1
[chicken, creamofchickensoup]                                       1
dtype: int64

[chicken, creamofchickensoup] 的预期值应该是 2。

如何找到列的唯一值 dtype is object?谢谢。

【问题讨论】:

  • 你用pandas.Series试过这个
  • 也许尝试排序 tuple 代替..? pd.Series(input_data).apply(lambda x: tuple(sorted(x))).value_counts()

标签: python pandas dataframe numpy-ndarray


【解决方案1】:

您可以使用itertools.chain 链接内部数组并使用set

from itertools import chain

set(chain.from_iterable(input_data))

{'Chicken',
 'CreamofChickensoup',
 'chicken',
 'creamofchickensoup',
 'stickscelery'}

要获取value_counts,需要explode这个栏目:

pd.Series(input_data).explode().value_counts()

creamofchickensoup    1
Chicken               1
chicken               1
CreamofChickensoup    1
stickscelery          1
dtype: int64

【讨论】:

    猜你喜欢
    • 2018-08-24
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多