我对Pandas在决定从数据框中select原始数据框的副本或原始视图时使用的规则感到困惑。 如果我有,例如, df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9)) 我明白, query返回一个副本,以便类似的东西 foo = df.query('2 < index <= 5') foo.loc[:,'E'] = 40 将不会对原始dataframedf 。 我也明白,标量或命名切片返回一个视图,以便这些分配,如 df.iloc[3] = 70 要么 df.ix[1,'B':'E'] = 222 会改变df 。 但是当涉及到更复杂的情况时,我却迷失了方向。 例如, df[df.C <= df.B] = 7654321 改变df ,但是 df[df.C <= df.B].ix[:,'B':'E'] 才不是。 有一个简单的规则,pandas使用,我只是失踪? 这些具体情况是怎么回事? 特别是,如何在满足特定查询的数据框中更改所有值(或值的子集)(如我在上面的示例中试图做的那样)? 注:这与这个问题不一样, 我已经阅读了文档 ,但没有受到启发。 我也读过了关于这个主题的“相关”的问题,但是我仍然错过了pandas正在使用的简单规则,以及如何将它应用到 – 例如 – 修改值(或值的子集)在满足特定查询的数据框中。
我有两个data.frames,一个只有字符和另一个字符和值。 df1 = data.frame(x=c('a', 'b', 'c', 'd', 'e')) df2 = data.frame(x=c('a', 'b', 'c'),y = c(0,1,0)) merge(df1, df2) xy 1 a 0 2 b 1 3 c 0 我想合并df1和df2。 字符a,b和c合并得很好,也有0,1,0但d和e没有任何内容。 我也想要d和e在合并表中,与0 0条件。 因此,对于df2 data.frame中的每个缺失行,必须将0放在df1表中,如: xy 1 a 0 2 b 1 3 c 0 4 d 0 5 e 0
我想了解如何有条件地取代数据框中的值而不使用循环。 我的数据框架结构如下: > df ab est 1 11.77000 2 0 2 10.90000 3 0 3 10.32000 2 0 4 10.96000 0 0 5 9.90600 0 0 6 10.70000 0 0 7 11.43000 1 0 8 11.41000 2 0 9 10.48512 4 0 10 11.19000 0 0 和输出是这样的: structure(list(a = c(11.77, 10.9, 10.32, 10.96, 9.906, 10.7, […]
今天,我感到非常惊讶的是,从数据文件(例如)读取数据时,pandas能够识别值的types: df = pandas.read_csv('test.dat', delimiter=r"\s+", names=['col1','col2','col3']) 例如,可以通过这种方式检查: for i, r in df.iterrows(): print type(r['col1']), type(r['col2']), type(r['col3']) 在特定的整数,浮游物和string被正确识别。 不过,我有一个具有以下格式的date的列: 2013-6-4 。 这些date被认为是string(而不是Pythondate对象)。 有什么方法可以将“pandas”学习到认可的date?
大多数关于在SO上列表中合并data.frame的问题并不完全涉及到我想要在这里得到的东西,而是随意地certificate我错了。 我有一个data.frames的列表。 我想“行”到另一个data.frame逐行。 实质上,所有第一行形成一个dataframe,第二行第二个dataframe,等等。 结果将是一个长度与我的原始data.frame(s)行数相同的列表。 到目前为止,data.frames的维度是相同的。 这里有一些数据要玩。 sample.list <- list(data.frame(x = sample(1:100, 10), y = sample(1:100, 10), capt = sample(0:1, 10, replace = TRUE)), data.frame(x = sample(1:100, 10), y = sample(1:100, 10), capt = sample(0:1, 10, replace = TRUE)), data.frame(x = sample(1:100, 10), y = sample(1:100, 10), capt = sample(0:1, 10, replace = TRUE)), data.frame(x […]
我知道如何添加列表列: > df <- data.frame(a=1:3) > df$b <- list(1:1, 1:2, 1:3) > df ab 1 1 1 2 2 1, 2 3 3 1, 2, 3 这工作,但不是: > df <- data.frame(a=1:3, b=list(1:1, 1:2, 1:3)) Error in data.frame(1L, 1:2, 1:3, check.names = FALSE, stringsAsFactors = TRUE) : arguments imply differing number of rows: 1, 2, 3 […]
我们有一个CSV文件的数据框。 dataframeDF具有包含观测值的列和包含已经进行测量的date的列( VaR2 )。 如果未loggingdate,则CSV文件包含缺失数据的值NA 。 Var1 Var2 10 2010/01/01 20 NA 30 2010/03/01 我们希望使用subset命令定义一个新的dataframenew_DF ,使得它只包含来自列( VaR2 )的具有NA'值的行。 在给出的例子中,只有第2行将被包含在新的DF 。 命令 new_DF<-subset(DF,DF$Var2=="NA") 不起作用,结果数据框没有行条目。 如果在原始的CSV文件中NA值与NULL交换,则相同的命令会产生所需的结果: new_DF<-subset(DF,DF$Var2=="NULL") 。 如何获得这个方法的工作,如果string的价值NA提供原始CSV文件?
R 数据框和列表有什么区别? 哪一个应该使用? 哪个更容易循环? 确切的问题:我必须先存储3个string元素,如“a”,“b”,“c”。 后来每个这些,我需要追加3个更多的元素; 例如“a”我必须添加“a1”,“a2”,“a3”。 后来我必须使用嵌套for循环来访问这些元素。 所以我很困惑使用数据框或列表或其他数据types,我可以先存储,然后追加(每列的种类)? 目前我收到错误,如“要更换的项目数不是更换长度的倍数”
在R中是否可以说 – 我想要从位置i到vector/matrix的末尾的所有索引? 说我想从第三列开始的子matrix。 我目前只知道这种方式: A = matrix(rep(1:8, each = 5), nrow = 5) # just generate some example matrix… A[,3:dim(A)[2]] # get submatrix from 3rd column onwards 但是,我真的需要写那个丑陋的dim(A)[2]吗? 怎么说“从第三栏开始”没有优雅的方式? 像A[,3:] ? (或A[,3:…] )?
这是我写的一段代码,用于从数据框中报告具有缺失值的variables。 我试图想到一个更优雅的方式来做到这一点,可能会返回一个data.frame,但我卡住了: for (Var in names(airquality)) { missing <- sum(is.na(airquality[,Var])) if (missing > 0) { print(c(Var,missing)) } } 编辑:我正在处理与数十到数百个variables的data.frames,所以关键是我们只报告缺less值的variables。