如何在熊猫中找到字符串

时间:2014-11-27 21:31:58

标签: python string pandas rows

我需要找到所有以字符串开头的行:“EC4” 我的尝试是:

dataset[dataset['Postcode'].str.contains("EC4")]

但是,有时字符串在其他字符中也包含EC4 ..

更一般地说,有一个字符串:“abcd abcd”,我是否只得到那些以“abc”开头的字符串,以避免获得如下字符串:“asd abce”?

谢谢你?

1 个答案:

答案 0 :(得分:1)

使用startswith代替contains

dataset[dataset['Postcode'].str.startswith("EC4")]

请注意contains接受任何正则表达式模式,所以

dataset[dataset['Postcode'].str.contains(r"^EC4")]

也会有用,虽然它可能在这里过度杀人。


dataset['Postcode'].str.contains(r"^EC4")返回一个带有布尔值的Series。它可以用作选择掩码,如上所示。

要在所选位置指定新值,您可以使用

dataset.loc[dataset['Postcode'].str.startswith("WC1"), 'Postcode'] = 'center'

另一种选择可能是使用Series.map方法:

In [153]: df = pd.DataFrame({'Postcode':['EC4', 'EC12', 'WC1']})

In [154]: codemap = {'WC1': 'Center', 'EC4': 'Center', 'EC12': 'Eastern'}

In [155]: df['Postcode'].map(codemap)
Out[155]: 
0     Center
1    Eastern
2     Center
Name: Postcode, dtype: object

因此在一个命令中完成了许多替换。