3

我有一个DataFrame带有NAME索引的 Pandas,其中一列名为CLASS

df = 
        CLASS
NAME    
John    Math
John    Science
Lisa    Music

现在如果我提取df.loc['John', 'CLASS'],它返回一个Series,但如果我提取df.loc['Lisa', 'CLASS']它返回一个str

有没有办法让我强制返回值是Series(即['Music', ])?之后我需要遍历返回的对象,我不想遍历MathScience在 John 的情况下(需要),但M, u, s, i, c在 Lisa 的情况下(不需要)。

4

1 回答 1

5

要强制loc返回 a Series,请将您的索引值包装在列表文字中。

df.loc[['John'], 'CLASS']

NAME
John       Math
John    Science
Name: CLASS, dtype: object

df.loc[['Lisa'], 'CLASS']

NAME
Lisa    Music
Name: CLASS, dtype: object

无论如何,这都会导致Series返回 1 (或更多)行。当列表为空时也有效,返回一个空列表:

df.loc[[], 'CLASS']
Series([], Name: CLASS, dtype: object)
于 2018-05-14T04:53:31.083 回答