当前位置: 首页 > 知识库问答 >
问题:

基于第二数据帧中的值范围的子集数据帧

武骁
2023-03-14

我正在尝试基于第二个数据框的值周围的范围创建一个数据框的子集,我一直在进行研究,但我就是想不出如何去做。我在这里使用了虚拟数据,因为它们都是包含许多列的大型数据集。

数据帧1(df1)有50列,数千条不同纬度的记录

数据帧2(df2)有数百个城镇,都位于不同纬度,比df1小得多

我需要df1的一个子集,它只包括纬度在df2纬度0.01范围内的行。所以代码需要查看df1的每一行,并根据df2的每一行测试该数字。输出将仅包括df1中纬度值在df2$纬度值0.01范围内的行。

从示例中,将包含以下行

我有代码的开头来做一个过滤器,然后我可以通过数据帧运行来创建子集

LatFil <- df1$latitude %in% df2$latitude)

但是我想不通怎么进入df2$纬度值的±0.01的逻辑测试

共有2个答案

羊舌高明
2023-03-14

另一种选择:

df2$Lat_hi <- df2$Lat + 0.01
df2$Lat_lo <- df2$Lat - 0.01


LatFil <- df1[df1$Latitude %in% c(df2$Lat, df2$Lat_hi, df2$Lat_lo),]
简宏义
2023-03-14

当涉及精度时(即加法或减0.01,它是浮点数),最好使用比较运算符而不是固定匹配

subset(df1, (Latitude >= (df2$Lat - 0.01)) & 
         (Latitude <= (df2$Lat + 0.01)))
 类似资料:
  • 使用Spark SQL,我有两个数据帧,它们是从一个数据帧创建的,例如: 我想过滤df1,如果它的“路径”的一部分是df2中的任何路径。所以如果df1有路径为“a/b/c/d/e”的行,我会找出df2中是否有路径为“a/b/c”的行。SQL应该是这样 其中udf是用户定义的函数,用于缩短df1的原始路径。简单的解决方案是使用JOIN,然后过滤结果,但这很慢,因为df1和df2都有超过10mil的行

  • 我有一个包含2171列和200行的df。我想标准化这些COL的范围。 [输入df] [如果代码仅用于一个列,我不确定如何应用于一系列列] 我对python非常陌生,我不知道为什么它会给我以下错误:

  • 我有两个火花数据集,其中一个列的帐户和键,键列在数组的格式[key1, key2, key3...]和另一个数据集的两个列的帐户和键值是在json.帐户,{key:值,键,值...}。我需要更新第二个数据集中的值,如果键出现在第一个数据集中。 预期产出

  • 我有两个数据帧df1和df2。df1就像一个具有以下值的字典 df2具有以下值: 我想基于df1数据帧中的,将df2拆分为3个新的数据帧。 日期,TLRA_权益栏应位于数据框 预期产出: > 数据帧 消费者,非周期性数据帧 请让我知道如何有效地做。我想做的是连接列名,例如,然后根据列名的前半部分分割数据帧。 代码: 但这很复杂。需要更好的解决方案。

  • 我有两个熊猫数据框 步骤2:对于flag=1的行,AA_new将计算为var1(来自df2)*组“A”和val“AA”的df1的'cal1'值*组“A”和val“AA”的df1的'cal2'值,类似地,AB_new将计算为var1(来自df2)*组“A”和val“AB”的df1的'cal1'值*组“A”和val“AB”的df1的'cal2'值 我的预期输出如下所示: 以下基于其他stackflow

  • 我有两个data.frames,每个都有数千行和几十列,都是通过合并几个csv文件创建的。data.frames正是我想要的。我还要补充一点,df1和df2有几列是共同的。唯一的问题是,在其中一个中,比如df1,对于某些列,有一些NAs(这是预期的/正常的)。好的一面是,我有NAs的相同列也出现在第二data.frame,比如df2,但没有NAs。我想做的是用df1同一列的值填充df2给定列中的N