df.head() 有时在 Pandas、Python 中不起作用

Posted

技术标签:

【中文标题】df.head() 有时在 Pandas、Python 中不起作用【英文标题】:df.head() sometimes doesn't work in Pandas, Python 【发布时间】:2012-10-26 11:02:58 【问题描述】:

我是 Python 和 Pandas 库的初学者,我对 DataFrame 的一些基本功能感到困惑。我有一个熊猫数据框如下:

>>>df.head()  
              X  Y       unixtime
0  652f5e69fcb3  1  1346689910622
1        400292  1  1346614723542
2  1c9d02e4f14e  1  1346862070161
3        610449  1  1346806384518
4        207664  1  1346723370096

但是,在我执行了一些功能之后:

def unixTodate(unix):
  day = dt.datetime.utcfromtimestamp(unix/1000).strftime('%Y-%m-%d')
  return day

df['day'] = df['unixtime'].apply(unixTodate)

我无法再使用 df.head() 函数:

>>>df.head()  

<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 190648 to 626582
Data columns:
X              5  non-null values
Y              5  non-null values
unixtime       5  non-null values
day            5  non-null values
dtypes: int64(3), object(5)

我不明白为什么会这样。我在这里做错了吗?欢迎任何指针!谢谢。

【问题讨论】:

【参考方案1】:

df.head(n) 返回一个 DataFrame 保存 df 的前 n 行。 现在显示DataFrame pandas 默认检查终端的宽度,如果太小而无法显示DataFrame,将显示摘要视图。这就是你在第二种情况下得到的结果。

您能否增加终端的大小,或禁用pd.set_printoptions(max_columns=10) 列上的自动检测?

【讨论】:

感谢 Wouter - 现在可以使用了。但是我的第二个数据框实际上比我的第一个数据框宽了一列,所以我有点惊讶它无法显示。有什么文件可以指点我吗? 没有太多...pandas.pydata.org/pandas-docs/stable/… 顺便说一句,pd.util.terminal.get_terminal_size() 能得到什么?这应该是(终端宽度,终端高度)。如果 pandas 不能自动检测,则默认返回 (80, 25)。 我明白了。谢谢。我的终端尺寸是 (112, 24)。 仅供参考,pandas.set_printoptions 现在已弃用。请参阅pandas.pydata.org/pandas-docs/stable/… 可以使用pandas.set_option 更改最大列数。【参考方案2】:

试试下面的代码段:

from IPython.display import display
display(df.head())

【讨论】:

【参考方案3】:
 DataFrame.head(n=5)

返回前 n 行。

此函数根据位置返回对象的前 n 行。它对于快速测试您的对象中是否包含正确类型的数据很有用。

参数:

n : int, default 5

要选择的行数。

返回:

obj_head : type of caller

调用者对象的前 n 行。

【讨论】:

以上是关于df.head() 有时在 Pandas、Python 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Pandas数据分析

pandas的简单使用-2-常用函数

Pandas

pandas常用函数

30个Pandas高频使用技巧

pandas的string日期列转化为timestamp(时间戳)