gpt4 book ai didi

python - 如果数据框包含列中的列表,则在列中查找不同的值

转载 作者:行者123 更新时间:2023-11-28 20:55:27 26 4
gpt4 key购买 nike

假设我们有以下数据框:

d = {'col1': [[1,2], [1,2], [2,1]], 'col2': ['A', 'B', 'C']}
df = pd.DataFrame(data=d)
df

col1 col2
[1, 2] A
[1, 2] B
[2, 1] C

我在数据框中的列中有一个列表,如何计算每列中的不同值?函数 df.nunique() 不工作它给出了这个错误:TypeError: ("unhashable type: 'list'", 'occurred at index :97A::SAFE')

预期的输出是:

col1 2
col2 3

我需要一个适用于更多列的解决方案,我的原始数据框将有几列,我不知道哪一列包含列表,哪一列不包含。

最佳答案

对于包含列表的列,您可以将值映射到元组可哈希,然后使用nunique:

df.col1.map(tuple).nunique()
# 2

df['col1'] = df.col1.map(tuple)
df.nunique()

col1 2
col2 3
dtype: int64

如果您不知道哪些列可能包含列表:

df.applymap(tuple).nunique()

col1 2
col2 3
dtype: int64

或者具体检查哪些列包含列表:

cols = [i for i, ix in enumerate(df.loc[0].values) if isinstance(ix, list)]
df.iloc[:,cols] = df.iloc[:,cols].applymap(tuple)
df.nunique()

关于python - 如果数据框包含列中的列表,则在列中查找不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56769787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com