在pythonpandas中基于df值比较创建派生字段
我有 2 个数据帧 - 一个是数据源数据帧,另一个是参考数据帧。我想根据这两个数据帧的比较在 df1 中创建一个附加列
df1 - 数据源
No | Name
213344 | Apple
242342 | Orange
234234 | Pineapple
df2 - 参考表
RGE_FROM | RGE_TO | Value
2100 | 2190 | Sweet
2200 | 2322 | Bitter
2400 | 5000 | Neutral
最后,如果 df1.No 的前 4 个字符落在 df2.RGE_FROM 到 df2.RGE_TO 的范围内,则获取派生列 df.DESC 的 df2.Value。否则,空白
No | Name | DESC
213344 | Apple | Sweet
242342 | Orange | Natural
234234 | Pineapple |
任何帮助表示赞赏!谢谢!
回答
我们可以IntervalIndex从列RGE_FROM和创建一个RGE_TO,然后将其设置为列的索引Value以创建映射系列,然后切片列中的前四个字符No并使用Series.map来自映射系列的值替换。
i = pd.IntervalIndex.from_arrays(df2['RGE_FROM'], df2['RGE_TO'], closed='both')
df1['Value'] = df1['No'].astype(str).str[:4].astype(int).map(df2.set_index(i)['Value'])
No Name Value
0 213344 Apple Sweet
1 242342 Orange Neutral
2 234234 Pineapple NaN