我有一个熊猫数据框,其中的一列指定为城镇名称。在每个城镇名称之后,我都会添加单词“ NSW”(例如“悉尼”将变为“悉尼NSW”)。但是,这意味着即使城镇已经编写了新南威尔士州,脚本也会再次添加它(例如,“ Narara NSW”将变为“ Narara NSW NSW”)。如何检查名称是否已包含NSW,并且仅在不存在NSW的情况下添加字符串。到目前为止,这是我的代码:
@Html.ValidationMessageFor(m => m.Username)
答案 0 :(得分:3)
将pandas.Series.where
与pandas.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