如何将一列保留为数据框
How to keep one single column as a dataframe
我有一个包含 20 列和一个索引的数据框。
它的形状类似于 (100, 20)。
我想从此数据帧中切出第 3 列,但希望将结果保留为 (100,1) 的数据帧。
- 如果我做
v = df['col3']
,我会得到一个系列(我不想要)
- 如果我执行
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()
我有一个包含 20 列和一个索引的数据框。
它的形状类似于 (100, 20)。
我想从此数据帧中切出第 3 列,但希望将结果保留为 (100,1) 的数据帧。
- 如果我做
v = df['col3']
,我会得到一个系列(我不想要) - 如果我执行
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()