如何将一个列保留为数据帧

时间:2016-09-18 08:25:43

标签: python pandas sklearn-pandas

我的数据框有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)]但是我必须
  3. (a)写一个不必要的!=条件(我想避免)和

    (b)我必须写一个包含19个列名的长列表。

    应该有一种更好,更清洁的方式来做我想要实现的目标。

2 个答案:

答案 0 :(得分:3)

  

如果我做v = df['col3'],我会收到一个系列(我不想要)

如果您使用df[cols],其中cols是一个列表,您将获得一个DataFrame(不是系列)。这包括它是由单个项目组成的列表的情况。因此,您可以使用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将系列转换为DataFrame。所以在这里,你也可以使用:

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

答案 1 :(得分:2)

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

df['col3'].to_frame()
相关问题