如何检查单词是否在熊猫数据框的每一行中

时间:2020-08-12 03:49:44

标签: python pandas

我有一个熊猫数据框,其中的一列指定为城镇名称。在每个城镇名称之后,我都会添加单词“ NSW”(例如“悉尼”将变为“悉尼NSW”)。但是,这意味着即使城镇已经编写了新南威尔士州,脚本也会再次添加它(例如,“ Narara NSW”将变为“ Narara NSW NSW”)。如何检查名称是否已包含NSW,并且仅在不存在NSW的情况下添加字符串。到目前为止,这是我的代码:

@Html.ValidationMessageFor(m => m.Username)

3 个答案:

答案 0 :(得分:3)

pandas.Series.wherepandas.Series.str.endswith一起使用:

s = pd.Series(["Sydney", "Narara NSW"])
s.where(s.str.endswith("NSW"), lambda x: x + " NSW")

输出:

0    Sydney NSW
1    Narara NSW
dtype: object

答案 1 :(得分:2)

我个人的喜好是在这种情况下通常使用np.where()

df['FullAddress'] = np.where((df['FullAddress'].str.endswith(' NSW')), df['FullAddress'], df['FullAddress'] + ' NSW')

它是矢量化的,类似于excel IF(CONDITION, THEN, ELSE)语句。

答案 2 :(得分:1)

import pandas as pd

df = pd.DataFrame({'FullAddress': ['Sydney', 'Sydney NSW', 'Narara NSW', 'Narara']})
df['FullAddress'] = df.apply(lambda x: x.FullAddress if x.FullAddress.endswith(' NSW') else x.FullAddress + ' NSW', axis=1)
print(df)

输出:

  FullAddress
0  Sydney NSW
1  Sydney NSW
2  Narara NSW
3  Narara NSW