【发布时间】:2018-05-04 21:32:47
【问题描述】:
我有一个数据框
d = {'name': ['john', 'tom', 'bob', 'rock', None], 'DoB': ['01/02/2010', '01/02/2012', '11/22/2014', '11/22/2014', '09/25/2016'], 'Address': ['NY', 'NJ', 'PA', 'NY', 'CA']}
df = pd.DataFrame(data = d)
df['month'] = pd.DatetimeIndex(df['DoB']).month
df['year'] = pd.DatetimeIndex(df['DoB']).year
我想做什么:如果 year = 2014 ,则将名称列中的前两个字母替换为“XX”。
我的代码:
df.loc[ (df.year == 2014) , df.name.str[0:2] ] = 'XX'
首先我得到这个错误: ValueError:无法使用包含 NA / NaN 值的向量进行索引
但即使有一个值而不是 None - 说 'jimy' - 我得到以下错误: KeyError: "['jo' 'to' 'bo' 'ro' 'ji'] not in index"
我也想到了替换方法,但它只有在你想替换给定的字符串时才有效。
有什么建议吗?
【问题讨论】:
标签: python string python-3.x pandas dataframe