python - 如何确定 N 个布尔 Pandas 列的逻辑真值?
问题描述
我有一个管道,它对表执行分析并添加额外的功能来对该行数据进行分类。在这个玩具案例中,我有一张带有功能的桌子,[id, x, y, z]
我正在添加has_adj
. 我不知道如何确定 N 列的逻辑真值(即调整搜寻中的列数可能是 N):
id x y z n has_adj_0 has_adj_1 has_adj_n
0 AX1 10.0 Adj <NA> .. True False ...
1 V0D 3.5 <NA> <NA> .. False False ...
2 G7L 8.0 <NA> Adj .. False True ...
最后,我设置了df['has_adj'] = True
行包含任何 True
值的特征,否则False
。
这是生成上表的玩具示例:
import pandas as pd
import re
def hf_txn_has_adj(text, regex_dict):
if pd.isna(text):
return False
rx = re.compile(regex_dict['regex_value'])
result = rx.match(text)
if rx.match(text):
return True
else:
return False
regex_dict = {'regex_value': '(Adj)'}
df = pd.DataFrame([['AX1', 10, 'Adj', pd.NA],
['V0D', 3.5, pd.NA, pd.NA],
['G7L', 8, pd.NA, 'Adj']],
columns=['id', 'x', 'y', 'z'])
for i, adj_feat in enumerate(['y', 'z']):
df['has_adj_' + str(i)] = df[adj_feat].apply(hf_txn_has_adj, regex_dict=regex_dict)
解决方案
推荐阅读
- gnat-gps - GNAT Programming Studio:新项目位置浏览器在尝试创建书签后冻结
- typescript - 打字稿数组映射联合
- laravel - Laravel 路由总是去索引
- ruby-on-rails - 在 ruby 中组织模块、服务及其共享方法
- javascript - 华丽的弹出窗口和 Woo 添加到购物车变化
- amazon-web-services - Cloudfront 需要多长时间才能使用新的 SSL 证书?
- javascript - 使用 Promise 的多个 jQuery Ajax 调用
- python - Django 2 个字段之一不能为空
- python - 为什么 Python Selenium 经常导致页面未加载?
- java - 当我使用 junit Cucumber 运行 TestRunner 类时,我得到 0 Scenarios 0 Steps 0m0.000s