使用pd.Series.value_counts()时如何阻止Jupyter输出截断的结果?

时间:2017-05-11 08:07:12

标签: pandas jupyter-notebook

我有一个DataFrame,我希望使用Series显示某个pd.Series.value_counts()中某些值的频率。

问题是我只在输出中看到截断的结果。我在Jupyter Notebook编写代码。

我尝试了几种方法失败:

df = pd.DataFrame(...) # assume df is a DataFrame with many columns and rows

# 1st method
df.col1.value_counts()

# 2nd method
print(df.col1.value_counts())

# 3rd method
vals = df.col1.value_counts()
vals  # neither print(vals) doesn't work

# All output something like this
value1         100000
value2         10000
...
value1000      1

目前这是我正在使用的,但它非常麻烦:

print(df.col1.value_counts()[:50])
print(df.col1.value_counts()[50:100])
print(df.col1.value_counts()[100:150])
# etc.

此外,我已阅读this相关的Stack Overflow问题,但未发现它有用。

那么如何停止输出截断的结果?

2 个答案:

答案 0 :(得分:4)

如果要打印所有行:

pd.options.display.max_rows = 1000
print(vals)

如果您只打印一次所有行:

with pd.option_context("display.max_rows", 1000):
    print(vals)

相关文档here

答案 1 :(得分:2)

我认为你需要option_context并设置一些大数字,例如999. solution的提升是:

  

option_context上下文管理器已通过顶级API公开,允许您使用给定的选项值执行代码。退出with块时,会自动恢复选项值。

#temporaly display 999 rows
with pd.option_context('display.max_rows', 999):
    print (df.col1.value_counts())