Python pandas:将选定的列保留为DataFrame而不是Series

当从pandas数据框(例如df.iloc[:, 0]df['A']df.A等)中select单个列时,生成的向量会自动转换为Series而不是单列dataframe。 不过,我正在编写一些将DataFrame作为input参数的函数。 因此,我更喜欢处理单列DataFrame而不是Series,这样函数可以假设说df.columns是可访问的。 现在我必须使用类似pd.DataFrame(df.iloc[:, 0])将Series显式转换为DataFrame。 这似乎不是最干净的方法。 有没有更好的方式直接从DataFrame索引,以便结果是一个单列DataFrame而不是Series?

正如@Jeff所提到的,有几种方法可以做到这一点,但我build议使用loc / iloc来更明确一些

 In [10]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) In [11]: df Out[11]: AB 0 1 2 1 3 4 In [12]: df[['A']] In [13]: df[[0]] In [14]: df.loc[:, ['A']] In [15]: df.iloc[:, [0]] Out[12-15]: # they all return the same thing: A 0 1 1 3 

后两种select在整数列名称的情况下消除了歧义(正是为什么loc / iloc被创build)。 例如:

 In [16]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 0]) In [17]: df Out[17]: A 0 0 1 2 1 3 4 In [18]: df[[0]] # ambiguous Out[18]: A 0 1 1 3