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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章