gpt4 book ai didi

python - 如果任何行包含特定字符串,则选择列

转载 作者:太空狗 更新时间:2023-10-29 22:00:20 26 4
gpt4 key购买 nike

如果列中的任何值包含字符串,我将尝试获取 DataFrame 中的列列表。例如,在下面的数据框中,我想要一个字符串中包含 % 的列列表。我能够使用 for 循环和 series.str.contains 方法来完成此操作,但似乎不是最佳选择,尤其是对于较大的数据集。有没有更有效的方法来做到这一点?

import pandas as pd

df = pd.DataFrame({'A': {0: '2019-06-01', 1: '2019-06-01', 2: '2019-06-01'},
'B': {0: '10', 1: '20', 2: '30'},
'C': {0: '10', 1: '20%', 2: '30%'},
'D': {0: '10%', 1: '20%', 2: '30'},
})

数据框

            A   B    C    D
0 2019-06-01 10 10 10%
1 2019-06-01 20 20% 20%
2 2019-06-01 30 30% 30

当前方法

col_list = []
for col in df.columns:
if (True in list(df[col].str.contains('%'))) is True:
col_list.append(col)

输出

['C', 'D']

最佳答案

stackany

df.columns[df.stack().str.contains('%').any(level=1)]

Index(['C', 'D'], dtype='object')

理解

[c for c in df if df[c].str.contains('%').any()]

['C', 'D']

过滤器

[*filter(lambda c: df[c].str.contains('%').any(), df)]

['C', 'D']

Numpy 的查找

from numpy.core.defchararray import find

df.columns[(find(df.to_numpy().astype(str), '%') >= 0).any(0)]

Index(['C', 'D'], dtype='object')

关于python - 如果任何行包含特定字符串,则选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704700/

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