我无法找到从多列Dataframe
返回一列DF
的pandas函数。
我需要drop([''])
一个确切的对立函数。
有什么想法吗?
答案 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))