【问题标题】:How can I get how many different 'values' are in a dataset for pandas?如何获得熊猫数据集中有多少不同的“值”?
【发布时间】:2021-12-24 05:22:20
【问题描述】:
df['value'].value_counts()

这段代码给了我两列。在左边我得到了这个列中的唯一值(比如 15),右边给出了每个值的频率(范围从 1 到 100)。但是,我想要 15 左侧的唯一值的 int 计数。无法弄清楚。谢谢

【问题讨论】:

  • df['value'].nunique().

标签: python pandas jupyter-notebook


【解决方案1】:

听起来您正在寻找唯一值的数量。这里有一些方法可以解决它。由于我使用range(10) 来填充我的示例DataFrame,因此下面的所有方法都会产生10 的值,正如我们所期望的那样。

import pandas as pd
import random
random.seed(42)

df = pd.DataFrame({'value': random.choices(range(10), k=1000)})

检查 DataFrame 的shape。 shape 参数将为您提供 DataFrame 中的(行、列)元组。

df.value_counts().shape[0] 

当您在 DataFrame 上调用 len() 时,它会返回行数。

len(df.value_counts())

计算 DataFrame 中唯一值的数量。 unique()

len(df['value'].unique())

可能是最好的方法。 nunique()

df.value.nunique()

【讨论】:

    【解决方案2】:

    我不知道我是否理解正确,但是如果您想将仅出现一次的左列的值相加,您可以df.groupby('values').filter(lambda x: len(x)==1)['values'].unique()。可能有更好的方法,但应该这样做。

    【讨论】:

      【解决方案3】:

      您可以在代码末尾添加reset_index(),并将其保存到 DataFrame,然后更改列并重命名索引列。像这样的:

      temp_df = df['value'].value_counts().reset_index()
      temp_df ['index'], temp_df ['value'] = temp_df ['value'], temp_df ['index']
      temp_df.columns = ['count', 'value']
      

      【讨论】:

        猜你喜欢
        • 2019-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-18
        • 2023-02-17
        • 2022-01-22
        • 2020-11-17
        • 1970-01-01
        相关资源
        最近更新 更多