在Julia中,我有两个dataframe,我想返回一个dataframe,该dataframe选择第一个dataframe中的行,这些行在列Fund中具有出现在第二个dataframe中的基金。一个简单的例子是:
df1 =DataFrame(基金= "AAA","AAA","BBB","CCC","DDD",购买= 1000,500,600,800,900)
df2 =DataFrame(基金= "AAA","CCC",总计=1000,200)
我想要返回的是:
df3 =DataFrame(基金= "AAA","AAA","CCC",购买= 1000,500,800)
我在df1中有大约10列和几千行。df2中的“基金”列将始终包含唯一的基金,并且将始终是df1的子集。基金也可能包含超过1,000行
我是Julia的新手,已经创建了下面的函数,我想知道是否有更好的方法来解决这个问题。
function newtransactions(df1,df2)
res = DataFrame([Any[],Any[]],["Fund", "Purchase"])
for t ∈ df2.Fund
res = append!(res,subset(df1, :Fund => X-> (X .== t)))
end
return res结束
发布于 2021-07-29 23:45:11
您需要执行innerjoin
julia> innerjoin(df1, df2, on=:Fund)
3×3 DataFrame
Row │ Fund Purchase Totals
│ String Int64 Int64
─────┼──────────────────────────
1 │ AAA 1000 1000
2 │ AAA 500 1000
3 │ CCC 800 200请注意,如果您需要选择第一个或第二个表中的所有行,也可以使用leftjoin和rightjoin。
https://stackoverflow.com/questions/68583759
复制相似问题