python - 从 R 到 Python 的转换 : Where did my levels go?

标签 python pandas

如果我有这样的数据框

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() 函数将列出变量的所有可能值,即使这些值不在数据框中。 Pandas 不会以这种方式行事。

> 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']

关于python - 从 R 到 Python 的转换 : Where did my levels go?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48602903/

相关文章:

python - 如何通过pybind11在python中捕获C++的异常?

python - 如何隐藏旧 Python 版本的不兼容代码?

python - 在守护进程模式下使用 mod_wsgi 在 Django 站点中导入错误

python - 连续到分类二维数组

python - 元素树 : Can't build root tree when getting XML from webpage

python - scrypt 构建轮失败 - python ethereum (pyethapp)

python - Pandas 滚动最大值的 Numpy 版本

python - 获取数据帧的协方差返回

python - 在其他 df Pandas 下添加 df

python - 迭代特定行中包含字符串的某些列