【发布时间】:2021-12-24 05:22:20
【问题描述】:
df['value'].value_counts()
这段代码给了我两列。在左边我得到了这个列中的唯一值(比如 15),右边给出了每个值的频率(范围从 1 到 100)。但是,我想要 15 左侧的唯一值的 int 计数。无法弄清楚。谢谢
【问题讨论】:
-
df['value'].nunique().
标签: python pandas jupyter-notebook
df['value'].value_counts()
这段代码给了我两列。在左边我得到了这个列中的唯一值(比如 15),右边给出了每个值的频率(范围从 1 到 100)。但是,我想要 15 左侧的唯一值的 int 计数。无法弄清楚。谢谢
【问题讨论】:
df['value'].nunique().
标签: python pandas jupyter-notebook
听起来您正在寻找唯一值的数量。这里有一些方法可以解决它。由于我使用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()
【讨论】:
我不知道我是否理解正确,但是如果您想将仅出现一次的左列的值相加,您可以df.groupby('values').filter(lambda x: len(x)==1)['values'].unique()。可能有更好的方法,但应该这样做。
【讨论】:
您可以在代码末尾添加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']
【讨论】: