如何强制pandas .loc返回系列

时间:2018-05-14 04:39:45

标签: python pandas series loc type-coercion

我有一个带有DataFrame索引的Pandas NAME和一个名为CLASS的列:

df = 
        CLASS
NAME    
John    Math
John    Science
Lisa    Music

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

我有办法强制将返回的值设为Series(即['Music', ])吗?我需要在之后迭代返回的对象,我不想在约翰的情况下(期望)通过MathScience但在Lisa的情况下M, u, s, i, c(不需要)。

1 个答案:

答案 0 :(得分:3)

要强制loc返回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)