隐藏Series输出中的索引
我遇到一个问题,正在StrataScratch上完成一个任务。
问题:
当我只使用单个括号时:
workers[workers['rank'] == 1]['worker_title']
我得到了带有索引列的答案:
但是,当我使用双括号时,它给了我正确的答案:
workers[workers['rank'] == 1][['worker_title']]
这是为什么呢?
1 个回答
1
你的作业要求是:
期望的输出类型:pandas.DataFrame
你第一次尝试用 []
和一个标量('worker_title'
),结果得到的是一个 pd.Series
。而你第二次尝试用一个列表(['worker_title']
)传给同样的操作符,这样就得到了一个 pd.DataFrame
。所以,这个答案被认为是正确的。更多信息可以查看 这里;也可以参考这个 帖子。
type(workers[workers['rank'] == 1]['worker_title'])
pandas.core.series.Series
type(workers[workers['rank'] == 1][['worker_title']])
pandas.core.frame.DataFrame
要求输出一个 df
有点奇怪,因为获取这个答案的一个明显方法是使用 df.loc
。但你需要用同样的技巧,或者链式调用 Series.to_frame
:
type(workers.loc[workers['rank'] == 1, 'worker_title'])
pandas.core.series.Series
type(workers.loc[workers['rank'] == 1, ['worker_title']])
pandas.core.frame.DataFrame
type(workers.loc[workers['rank'] == 1, 'worker_title'].to_frame())
pandas.core.frame.DataFrame
使用 df.query
进行评估时也是一样的情况。