隐藏Series输出中的索引

-1 投票
1 回答
46 浏览
提问于 2025-04-14 15:34

我遇到一个问题,正在StrataScratch上完成一个任务。

问题:

问题 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 进行评估时也是一样的情况。

撰写回答