Dataframe,只保留一列

时间:2017-08-17 15:35:44

标签: pandas dataframe

我无法找到从多列Dataframe返回一列DF的pandas函数。 我需要drop([''])一个确切的对立函数。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

您可以使用以下表示法返回单个列数据帧:

df = pd.DataFrame(data=np.random.randint(1, 100 ,(10, 5)), columns=list('ABCDE'))

df_out = df[['C']]

输出:

    C
0  65
1  48
2   1
3  41
4  85
5  55
6  45
7  10
8  44
9  11

注意:df [' C']会返回一个系列。并且,您可以使用to_frame方法将该系列转换为数据框。或者使用双括号[[]]。

答案 1 :(得分:0)

为了完整起见,我想展示我们如何使用参数 drop 从多列数据帧中获取单列数据帧。另外,我使用 tidyverse Universe (paper) 解释结果。

使用数据帧 DF 的最小示例

library(tidyverse)

DF <- data.frame(a = 1:2, b = c("e", "f"))
str(DF)
#> 'data.frame':    2 obs. of  2 variables:
#>  $ a: int  1 2
#>  $ b: chr  "e" "f"

顺便说一句,请注意,在低于 4.0 的 R 版本中,默认情况下 b 列将是一个因子(除非我们使用 stringsAsFactors= FALSE

运算符 [ 返回一个列表(数据帧),因为它保留了原始结构(数据帧)

DF[1]
#>   a
#> 1 1
#> 2 2

DF['a']
#>   a
#> 1 1
#> 2 2

另一方面,运算符 [[ 将结果简化为最简单的结构,即一列数据帧的向量。在它的三个表达式中,你总是得到简化版本(一个向量)

DF[[1]]
#> [1] 1 2

DF[['a']]
#> [1] 1 2

DF$a
#> [1] 1 2

最后,使用 [ 与行和列维度

DF[, 1]
#> [1] 1 2

还返回简化版本,因为参数 drop 默认设置为 TRUE。将其设置为 FALSE,您保留结构并获得一列数据框

DF[, 1, drop = FALSE]
#>   a
#> 1 1
#> 2 2

关于这一点的一个很好的解释可以在以下位置找到:Advanced R by Hadley Wickham,CRC,2015 年,book 在线版本中的第 3.2.1 节或第 4.2.5 节(2021 年 6 月)

最后,在 tidyverse Universe CRAN 中,您总是在选择一列时获得一个数据框(tibble)

DF %>% 
  select(2)
#>   b
#> 1 e
#> 2 f

DF %>% 
  select("a")
#>   a
#> 1 1
#> 2 2

DF %>% 
  select(a)
#>   a
#> 1 1
#> 2 2

reprex package (v0.3.0) 于 2021 年 6 月 4 日创建

答案 2 :(得分:-1)

这很简单,只需使用双花括号将其选中即可。 它将在数据帧中返回结果。您可以通过type(df)

进行检查
# First create a data frame to check this
column = df[['Risk']]
print(column)
print(type(column))