我有以下输入数据框:
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().
有帮助吗?
答案 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'])
看起来像这样:
例如,如果要选择包含字母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
将是:
符合预期。