我是一个R用户,我无法计算出pandas等价于match()。我需要使用这个函数来迭代一堆文件,获取一个关键的信息片段,并将其合并回“url”上的当前数据结构中。在R我会做这样的事情:
logActions <- read.csv("data/logactions.csv")
logActions$class <- NA
files = dir("data/textContentClassified/")
for( i in 1:length(files)){
tmp <- read.csv(files[i])
logActions$class[match(logActions$url, tmp$url)] <-
tmp$class[match(tmp$url, logActions$url)]
}
我不认为我可以使用merge()或join(),因为每次都会覆盖logActions$class。我也不能使用update()或combine_first(),因为它们都没有必要的索引功能。我还尝试基于this SO post创建match()函数,但无法确定如何使它与DataFrame对象一起工作。抱歉,如果我错过了一些明显的东西。在
下面是一些python代码,总结了我在pandas中执行类似match()的无效尝试:
^{pr2}$所需输出为:
url action class
0 foo.com 0 0
1 foo.com 1 0
2 bar.com 0 1
但是,我需要能够一次又一次地调用它,这样我就可以遍历每个文件。在
注意
pandas.match
的存在,它正是R的match
所做的。在编辑:
如果所有右数据帧中的url都是唯一的,那么可以将右数据帧作为由
url
索引的一系列class
,然后通过索引得到左边每个url的类。在这是你想要的吗?在
^{2}$输出:
如果左边的class列不是全部为NaN,则可以将其与结果合并。在
以下是我最终使用的完整代码:
相关问题 更多 >
编程相关推荐