Tag: dataframe

如何实现pandas数据框的“in”和“not in”

我如何实现SQL的IN和NOT IN的等价物? 我有一个所需值的列表。 这是一个场景: df = pd.DataFrame({'countries':['US','UK','Germany','China']}) countries = ['UK','China'] # pseudo-code: df[df['countries'] not in countries] 我目前的做法如下: df = pd.DataFrame({'countries':['US','UK','Germany','China']}) countries = pd.DataFrame({'countries':['UK','China'], 'matched':True}) # IN df.merge(countries,how='inner',on='countries') # NOT IN not_in = df.merge(countries,how='left',on='countries') not_in = not_in[pd.isnull(not_in['matched'])] 但是,这似乎是一个可怕的kludge。 任何人都可以改进吗?

将dataframe列表转换为一个dataframe

我有一个代码,在一个地方结束了一个dataframe列表,我真的想要转换成一个单一的大数据框架。 我从一个早期的问题中得到了一些指导,试图做类似的事情,但是更复杂一些。 这里是我开始的一个例子(这是非常简单的说明): listOfDataFrames <- vector(mode = "list", length = 100) for (i in 1:100) { listOfDataFrames[[i]] <- data.frame(a=sample(letters, 500, rep=T), b=rnorm(500), c=rnorm(500)) } 我目前正在使用这个: df <- do.call("rbind", listOfDataFrames)

将data.frame列名传递给一个函数

我试图写一个函数来接受data.frame( x )和它的一column 。 该函数在x上执行一些计算,然后返回另一个data.frame。 我坚持最佳实践方法将列名传递给函数。 下面的两个最小例子fun1和fun2产生所需的结果,能够在x$column上执行操作,以max()为例。 但是,两人都依靠看似(至less对我来说)不雅 调用substitute()和可能eval() 需要将列名作为字符向量传递。 fun1 <- function(x, column){ do.call("max", list(substitute(x[a], list(a = column)))) } fun2 <- function(x, column){ max(eval((substitute(x[a], list(a = column))))) } df <- data.frame(B = rnorm(10)) fun1(df, "B") fun2(df, "B") 例如,我希望能够将该函数调用为fun(df, B) 。 其他选项,我已经考虑,但没有尝试过: 传递column作为列号的整数。 我认为这将避免substitute() 。 理想情况下,该function也可以接受。 with(x, get(column)) ,但是,即使它起作用,我认为这仍然需要substitute 利用formula()和match.call() ,我也没有太多的经验。 子问题 : do.call()是否优于eval() ?

在数据框的分隔符处分隔列

我想根据分隔符在数据框内将一列分成两列。 例如, a|b b|c 成为 ab bc 在一个数据框内。 谢谢!

计算平均每组(平均分组)

我有一个大的数据框架看起来类似于这样的: df <- data.frame(dive=factor(sample(c("dive1","dive2"),10,replace=TRUE)),speed=runif(10)) > df dive speed 1 dive1 0.80668490 2 dive1 0.53349584 3 dive2 0.07571784 4 dive2 0.39518628 5 dive1 0.84557955 6 dive1 0.69121443 7 dive1 0.38124950 8 dive2 0.22536126 9 dive1 0.04704750 10 dive2 0.93561651 我的目标是在另一列等于某个特定值时对一列的值求平均值,并对所有值重复此操作。 即在上面的例子中,我想返回列dive每个唯一值的列speed的平均值。 所以当dive==dive1时, dive==dive1的每个值的speed是这样的。

如何用R数据框中的零代替NA值?

我有一个data.frame和一些列有NA值。 我想用零replaceNA。 我如何做到这一点?

过滤一个data.frame

让我们假设我有像数据框 expr_value cell_type 1 5.345618 bj fibroblast 2 5.195871 bj fibroblast 3 5.247274 bj fibroblast 4 5.929771 hesc 5 5.873096 hesc 6 5.665857 hesc 7 6.791656 hips 8 7.133673 hips 9 7.574058 hips 10 7.208041 hips 11 7.402100 hips 12 7.167792 hips 13 7.156971 hips 14 7.197543 hips 15 7.035404 hips 16 7.269474 hips 17 […]

R列表到dataframe

我有一个嵌套的数据列表。 它的长度是132,每个项目是一个长度为20的列表。是否有一个快速的方法来将这个结构转换成一个有132行和20列数据的数据框? 我是R新手,所以我想这可能是一个简单的方法。 我在这里search堆栈溢出,找不到类似的问题,所以我很抱歉,如果我错过了。 一些示例数据: l <- replicate( 132, list(sample(letters, 20)), simplify = FALSE )

统计每个组内的行数

我有一个数据框,我想统计每个组内的行数。 我正常使用aggregate函数来aggregate数据如下: df2 <- aggregate(x ~ Year + Month, data = df1, sum) 现在,我想统计观察,但似乎无法find合适的论据。 直觉上,我认为这将如下: df2 <- aggregate(x ~ Year + Month, data = df1, count) 但是,没有这样的运气。 有任何想法吗? 一些玩具数据: set.seed(2) df1 <- data.frame(x = 1:20, Year = sample(2012:2014, 20, replace = TRUE), Month = sample(month.abb[1:3], 20, replace = TRUE))

通过名称删除数据框列

我想从数据框中删除一些列。 我知道我们可以使用类似下面的方法单独删除它们: df$x <- NULL 但我希望用更less的命令来做到这一点。 另外,我知道我可以像这样使用整数索引来删除列: df <- df[ -c(1, 3:6, 12) ] 但是我担心我的variables的相对位置可能会改变。 鉴于R是多么强大,我认为可能比逐一删除每一列更好。