我有一个对表执行分析并添加额外功能以对该行数据进行分类的管道。在这个玩具箱中,我有一个带有特征 [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
其中行包含 any True
值,否则错误
。
这是生成上表的玩具示例:
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)
最佳答案
df['has_adj'] = df.filter(like='has_adj_').any(axis=1)
print(df)
df
:
id x y z has_adj_0 has_adj_1 has_adj
0 AX1 10.0 Adj <NA> True False True
1 V0D 3.5 <NA> <NA> False False False
2 G7L 8.0 <NA> Adj False True True
关于python - 如何确定 N 个 bool Pandas 列的逻辑真值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67654174/