我需要找到所有以字符串开头的行:“EC4” 我的尝试是:
dataset[dataset['Postcode'].str.contains("EC4")]
但是,有时字符串在其他字符中也包含EC4 ..
更一般地说,有一个字符串:“abcd abcd”,我是否只得到那些以“abc”开头的字符串,以避免获得如下字符串:“asd abce”?
谢谢你?答案 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
因此在一个命令中完成了许多替换。