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

使用列作为范围从数据帧返回值

冷英光
2023-03-14

因素数据框架:

上表用于返回基于两个值的系数,即“代码”和特定数字。提供了一个特定值,如5,302,253,8000,如果该值介于最小值和最大值之间,则返回因子。

例如:

    < li>A,355 = 3 B,9000 = 8

我有一个单独的表,其中有几千行需要分配因子的值。

数据帧:

如何使用 pandas 工具集返回所需因子并将相关因子追加为新列?

共有1个答案

邓建柏
2023-03-14

DataFrame.merge 中使用左连接,将缺失值替换为 np.inf,然后在 Series.between 中过滤,如果布尔索引中不匹配,则在 Mins 中筛选可能的缺失值:

print (df1)
  Code   Val
0    A   355
1    B  9000
2    C     5

print (df2)
  Code  Min    Max  Factor
0    A    0  100.0       1
1    A  101  300.0       2
2    A  301  800.0       3
3    A  800    NaN       4
4    B    0  100.0       2
5    B  101  300.0       4
6    B  301  800.0       6
7    B  800    NaN       8

df = df1.merge(df2.fillna({'Max':np.inf}), how='left', on='Code')

df3 = (df[df['Val'].between(df['Min'], df['Max']) | df['Min'].isna()]
             .drop(['Min','Max'], axis=1))
print (df3)
  Code   Val  Factor
2    A   355     3.0
7    B  9000     8.0
8    C     5     NaN
 类似资料:
  • 我有一个包含2171列和200行的df。我想标准化这些COL的范围。 [输入df] [如果代码仅用于一个列,我不确定如何应用于一系列列] 我对python非常陌生,我不知道为什么它会给我以下错误:

  • 问题内容: 我试图查询包含年份列的表,并以逗号分隔的年份范围的字符串形式返回这些年份。年份范围将由数组中出现的连续年份确定,非连续年份/年份范围应以逗号分隔。 而不是数据类型的原因是,其中一些值包含而不是年份列表。我们可以忽略这些结果。 到目前为止,我几乎没有运气解决这个问题,因为我什至不知道从哪里开始。 有人可以给我一些指导或提供一些有用的示例来说明如何解决诸如挑战之类的问题吗? 例子 产出目标

  • 我正在使用: Python 3.6.8 火花2.4.4 我在spark类路径中有以下JAR: http://repo1.maven.org/maven2/com/databricks/spark-redshift_2.11/2.0.1/spark-redshift_2.11-2.0.1.jar http://repo1.maven.org/maven2/com/databricks/spark-a

  • 我有一个熊猫数据框,有许多标记列。例如: 我想用多个范围切片这个数据帧。例如: 但这似乎是不可能的。有没有办法做到这一点? 这个问题与使用Pandas和Pandas Dataframe选择多个不连续列/切片切片多列范围有关,但我希望使用列名而不是索引切片<代码>np。r 似乎不支持字符串范围,只支持数字范围。

  • [新加入Spark]语言-Scala 根据文档,RangePartitioner对元素进行排序并将其划分为块,然后将块分发到不同的机器。下面的例子说明了它是如何工作的。 假设我们有一个数据框,有两列,一列(比如“a”)的连续值从1到1000。还有另一个数据帧具有相同的模式,但对应的列只有4个值30、250、500、900。(可以是任意值,从1到1000中随机选择) 如果我使用RangePartit

  • 本文向大家介绍Ruby范围作为序列,包括了Ruby范围作为序列的使用技巧和注意事项,需要的朋友参考一下 示例 范围最重要的用途是表达序列 语法: 要么 最重要的end值必须大于begin,否则将不返回任何值。 例子: