有效地在pandas数据帧中搜索字符串的第一个字符

时间:2017-11-02 16:35:21

标签: python pandas if-statement dataframe startswith

我有一个pandas数据框列,我需要修改以2开头的那个列的任何条目。现在,我正在使用它,但是非常非常慢:

for i, row in df.iterrows():
    if df['IDnumber'][i].startswith('2') == True:
       '''Do some stuff'''

我觉得(读:知道)有一种更有效的方法可以在不使用for循环的情况下做到这一点,但我似乎无法找到它。

我尝试过的其他事情:

if df[df['IDnumber'].str[0]] == '2':
   '''Do some stuff'''

if df[df['IDnumber'].str.startswith('2')] == True:
    '''Do some stuff'''

分别给出错误:

KeyError: "['2' '2' '2' ..., '1' '1' '1'] not in index"
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

1 个答案:

答案 0 :(得分:1)

您的意思是要过滤字符串列中的值以某个字符开头的行吗?

>>> df
   foobar
0    0foo
1    1foo
2    2foo
3    3foo
4    4foo
5    5foo
6    0bar
7    1bar
8    2bar
9    3bar
10   4bar
11   5bar

>>> df.loc[(df.foobar.str.startswith('2'))]
  foobar
2   2foo
8   2bar

然后是:

>>> begining_with_2 = df.loc[(df.foobar.str.startswith('2'))]
>>> for i, row in begining_with_2.iterrows():
...    print(row.foobar)

2foo
2bar