大熊猫数据框-列选择

时间:2020-08-12 15:09:02

标签: python pandas

我有以下输入数据框:

PRECISE 1   RE=130  VAL=5   LENGHT=8    TYPE=DEL    AF=0.0005
PRECISE 8   RE=30   VAL=8   LENGHT=8    TYPE=INS    AF=0.05
PRECISE 3   RE=13   VAL=85  LENGHT=8    TYPE=INV    AF=0.08
PRECISE 7   RE=10   VAL=18  LENGHT=8    TYPE=DEL    AF=0.001

如果panda.Series包含以下值('RE=','AF='),我想选择列。我不能按列名进行选择,因为取决于用于生成文件的工具的版本,它可以是可变的。但是,在该工具的不同版本中,标记保持不变。

预期输出:

RE=130  AF=0.0005
RE=30   AF=0.05
RE=13   AF=0.08
RE=10   AF=0.001

我尝试使用以下代码:

RE_cols = [col for col in df_b.columns if df_b[col].str.contains('RE=')]

但是我有以下错误消息,但我没有解决:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

有帮助吗?

1 个答案:

答案 0 :(得分:0)

#import pandas
import pandas as pd

设置

假设您有一个数据框:

data = {'data1': ['A', 'B', 'Cz', 'D'], 'data2': ['az', 'za', 'c', 'd']}
df = pd.DataFrame.from_dict(data, orient='index',
                       columns=['col1', 'col2', 'col3', 'col4'])

看起来像这样:

enter image description here


解决方案

例如,如果要选择包含字母z的列:

您可以这样做:

some_string_the_column_needs_to_contain_to_be_selected = 'z'
filtered_df=df[[col for col in df.columns if any(df[col].str.contains(some_string_the_column_needs_to_contain_to_be_selected))]]

您的filtered_df将是:

enter image description here

符合预期。