如果我有这样的数据框

df = pd.DataFrame({'labels': ['A', 'B', 'C'], 'moreLabels': ['D','E','F'],
'numbers': [1,2,3] })


我想找出“ moreLabels”的所有可能值,是否有一种简单的方法?我正在像这样枢转并列出数据透视表的列:

pivot = df.pivot_table(values = 'numbers', index = 'labels',
columns = 'moreLabels'
list(pivot.columns)


,但这需要几个步骤,我想采用一种简洁的方式来做到这一点

dataframe[column].levels()

最佳答案

R的levels()函数将列出该变量的所有可能值,即使这些值不在数据框中出现也是如此。熊猫的行为不是这种方式。

> df <- data.table(moreLabels = c('D', 'E', 'F'), numbers = c(1, 2, 3))
> df[, moreLabels := as.factor(moreLabels)]
> df[, levels(moreLabels)]
[1] "D" "E" "F"

> df[numbers > 1, ]  # if we subset, we only see values "E" and "F"
   moreLabels numbers
1:          E       2
2:          F       3

> df[numbers > 1, levels(moreLabels)]
[1] "D" "E" "F"  # even though we would expect only "E" and "F"


如果要查找列中显示的唯一值,请使用pd.Series.unique()函数。

>>> df['moreLabels'].unique()
['D', 'E', 'F']

10-04 21:46
查看更多