python - 如何从熊猫数据框中过滤掉值?
问题描述
我有两个数据框。我需要从主数据框中过滤一些值。我需要一些帮助才能做到这一点。请你帮助我好吗?
解释:
df_main:
kol_id|jnj_id|kol_full_nm|foc_area_id|thrc_cd|thrc_nm|dis_area|dis_area_nm|expert_score|pub_scor|rx_scor|refrl_scor|clincl_rsrchr_scor|is_kol
101152|7124166|Constance Ann Benson|1|VIR|VIR|HIV|HIV|45.17|68.5|0|1.69|88|Y
251489|7822721|Mariam S Aziz|1|VIR|VIR|HIV|HIV|44.33|39.5|33|34.26|76|Y
100856|7356682|William Rodney Short|1|VIR|VIR|HIV|HIV|49.49|44|57.5|50.39|48|Y
251460|7933108|Laura A Guay|1|VIR|VIR|HIV|HIV|34.8|63|0|0|48|N
df2:
filter filter_value columns user_id password api_name
kol_id 101152 kol_id vmani4 abede1234 KOL
thrc_nm VIR jnj_id vmani4 abede1234 KOL
jnj_id 7124166 kol_full_nm vmani4 abede1234 KOL
thrc_cd vmani4 abede1234 KOL
我必须在 df2 的帮助下过滤掉 df_main 中的值。在 df2 中,它有 3 列 - 过滤器、过滤器值和列。所以我必须像这样创建匹配语句 -
if(kol_id == '101152' and thrc_nm == 'VIR' and jnj_id == '7124166')
Then extract only those column records from df_main which is present in df2['columns']
但问题是filter和filter_value列记录不确定,意味着它是由api_name改变的。所以我需要编写适用于所有 api 的代码。如果您需要更多信息,请告诉我。
表示最终结果
df_result:
kol_id|jnj_id|kol_full_nm|thrc_cd|
101152|7124166|Constance Ann Benson|VIR
解决方案
希望这会奏效-
## For this case you'll have to add these 2 lines to avoid comparing str to int
## and to avoid nans in last row of df2
df_final = df_main.copy().astype(str)
df2 = df2[:3].astype(str)
for i, row in df2.iterrows():
df_final = df_final[df_final[row['filter']]==row['filter_value']]
推荐阅读
- java - 将 String 中的 Headers 数据转换为 Map
> - flutter - 颤振:堆栈和墨水覆盖
- css - 使用 flex 根据窗口大小将内容显示为行或列
- javascript - Cube.js - 无法加入 2 个或更多表,但不断收到“找不到要加入的加入路径”错误
- ios - 带有 WebView 的 iOS 中的 URL 方案
- reactjs - 成功消息显示两次反应JS
- postgresql - 使用 CSV 文件在 AWS RDS 上创建 Postgres 表
- go - 嵌套方法调用
- python - 具有多个类别的 Groupby pandas
- javascript - Python 和 Javascript 中的 UTC 时间相差 5 小时,如何解决?