如何将一列保留为数据框

How to keep one single column as a dataframe

我有一个包含 20 列和一个索引的数据框。

它的形状类似于 (100, 20)。

我想从此数据帧中切出第 3 列,但希望将结果保留为 (100,1) 的数据帧。

  1. 如果我做 v = df['col3'],我会得到一个系列(我不想要)
  2. 如果我执行 v =df[df['col3']!=0] 然后 v.drop(label=[list of 19 columns], axis = 1) --- 我得到了我想要的 [那是 df(100,1)] 但我必须

(a) 写一个不必要的 != 条件(我想避免)和

(b) 我必须写一长串 19 列名称。

应该有更好更简洁的方法来实现我想要实现的目标。

If I do a v = df['col3'], I get a Series (which I do not want)

如果您使用 df[cols],其中 cols 是一个列表,您将得到一个 DataFrame(而不是一个 Series)。这包括它是由单个项目组成的列表的情况。所以,你可以使用 df[['col3']].

例如:

In [33]: df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

这给出了一个系列:

In [35]: df['a']
Out[35]: 
0    1
1    2
Name: a, dtype: int64

这给出了一个 DataFrame:

In [36]: df[['a']]
Out[36]: 
   a
0  1
1  2

最后,请注意,您始终可以使用 reset_index 将 Series 转换为 DataFrame。所以在这里,你也可以使用:

In [44]: df['a'].reset_index()
Out[44]: 
   index  a
0      0  1
1      1  2

另一个方便的技巧是 to_frame()

df['col3'].to_frame()