首页 > 解决方案 > 循环数据框并根据 Pandas 中的子字符串选择行

问题描述

我有一个包含 5 列的数据框,其中之一是“TABLE_NAME”。该列具有以下值:

A_value1
B_value1
B_value2
A_value150

我只想打印以“A_”开头的那些。

我试过这个,但它返回以下内容:

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

这是代码:

value = 'A_'
for index, row in df.iterrows():
    if df.loc[df['TABLE_NAME'].str.contains(value)]:
        print('y')
    else:
        print('n')

标签: pythonstringpandas

解决方案


您可以使用 str.startswith:

df.loc[df.TABLE_NAME.str.startswith('A_')]

如果你想使用你的 for 循环,你可以这样做:

value = 'A_'
for index, row in df.iterrows():
    if row['TABLE_NAME'].startswith(value):
        print('y')
    else:
        print('n')

推荐阅读