gpt4 book ai didi

python - 如何获取值在 pandas 的任何过滤列中至少匹配一次的行

转载 作者:行者123 更新时间:2023-12-01 00:36:22 28 4
gpt4 key购买 nike

我正在寻找通用方法,首先过滤大型数据框中的列,然后指定值并检查是否有任何匹配条件。

要考虑的列:filtered_columns = df.filter(regex=f"^Y_.*").columns

输入数据帧示例:

    df = pd.DataFrame([
['sd', 'X_dsa', 'sd', 'ad'],
['X_ds', 'ad', 'dsd', 'asd'],
['ase', 'asd', 'asd', 'asd'],
['agr', 'aee', 'X_sa', 'atd']
], columns=['Y_aa', 'Y_ab', 'cc', 'dd'])

我不知道如何获取任何值以 X_ 开头的行。

理论上,我可以像这样明确定义列和标准:

desired_output = df[df['Y_aa'].str.startswith('X_') | df['Y_ab'].str.startswith('X_')]
Y_aa Y_ab cc dd
0 sd X_dsa sd ad
1 X_ds ad dsd asd

但重点是列数有时可能会发生变化。每次调整代码将是一场噩梦。请问有什么想法吗?

最佳答案

您可以使用any来做到这一点

m=df.filter(regex='^Y_').apply(lambda x : x.str[:2]).eq('X_').any(1)
df[m]
Out[823]:
Y_aa Y_ab cc dd
0 sd X_dsa sd ad
1 X_ds ad dsd asd

关于python - 如何获取值在 pandas 的任何过滤列中至少匹配一次的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57728083/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com