yuz*_*uzu 5 calculated-columns dataframe python-3.x pandas
我有 2 个数据帧 - 一个是数据源数据帧,另一个是参考数据帧。我想根据这两个数据帧的比较在 df1 中创建一个附加列
df1 - 数据源
No | Name
213344 | Apple
242342 | Orange
234234 | Pineapple
Run Code Online (Sandbox Code Playgroud)
df2 - 参考表
RGE_FROM | RGE_TO | Value
2100 | 2190 | Sweet
2200 | 2322 | Bitter
2400 | 5000 | Neutral
Run Code Online (Sandbox Code Playgroud)
最后,如果 df1.No 的前 4 个字符落在 df2.RGE_FROM 到 df2.RGE_TO 的范围内,则获取派生列 df.DESC 的 df2.Value。否则,空白
No | Name | DESC
213344 | Apple | Sweet
242342 | Orange | Natural
234234 | Pineapple |
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!谢谢!
我们可以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'])
Run Code Online (Sandbox Code Playgroud)
No Name Value
0 213344 Apple Sweet
1 242342 Orange Neutral
2 234234 Pineapple NaN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |