python - 如何根据范围表中的值从数据框中选择行
问题描述
我有一个范围表(start,end)
:
name blue green yellow purple
a 1,5 654,678 11,15
b 88761,88776
c 1211,1215 38,47
d 89,95 1567,1578
像这样的数据框:
Supplier colour
Abi 1
John 678
Smith 120
Tim 1570
Don 87560
如何过滤df
以仅包含列中的值在colour
表中提供的范围内的行?我希望决赛df
看起来像这样:
Supplier colour
Abi 1
John 678
Tim 1570
谢谢!
解决方案
尝试使用列表理解和loc
:
l = [x for i in df1[df1.columns[1:]].values.flatten().tolist() if ',' in str(i) for x in range(int(i.split(',')[0]), int(i.split(',')[1]) + 1)]
print(df2.loc[df2['colour'].isin(l)].reset_index(drop=True))
输出:
Supplier colour
0 Abi 1
1 John 678
2 Tim 1570
推荐阅读
- python - 根据列表值更新 Pandas Dataframe 中的行
- node.js - 在 Nest.js 服务器上的请求正文中接受二进制文件
- python - 我正在用 python3 和 python-telegram-bot 编写一个 python 机器人,我希望它在发送消息之前显示“正在输入...”
- integromat - 无时间日期的可映射参数
- mysql - 来自 BaseX 的 xquery 错误:[sql:init] 找不到驱动程序:com.mysql.jdbc.Driver
- php - 爆炸不能在php中使用特殊字符
- r - 如何向列表的每个元素添加列名/列数最少为 6 个行值的列?
- javascript - 即使我使用 .then,我的异步功能也会返回 Pending
- ssl - 无法通过 ssh git clone bitbucket
- r - 在 R 中使用 tm 包进行清理和处理时,如何保留我的唯一标识符?