如何使用索引

时间:2018-05-04 21:32:47

标签: python string python-3.x pandas dataframe

我有一个数据框

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

enter image description here

我想做什么:如果年份= 2014,请在名称栏中将前两个字母替换为“XX”。

我的代码:

df.loc[ (df.year == 2014) , df.name.str[0:2] ] = 'XX'

首先我收到此错误: ValueError:无法使用包含NA / NaN值的向量进行索引

但即使有一个值而不是None - 说'jimy' - 我得到以下错误:KeyError:“['jo''到''bo''ro''ji']而不是索引”

我还想到了替换方法,但只有在你想要替换给定的字符串时它才有效。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你很亲密。请注意,pd.DataFrame.loc使用列标签作为第二个索引器。

mask = df['year'] == 2014
df.loc[mask, 'name'] = 'XX' + df.loc[mask, 'name'].str[2:]

print(df)

  Address         DoB  name  month  year
0      NY  01/02/2010  john      1  2010
1      NJ  01/02/2012   tom      1  2012
2      PA  11/22/2014   XXb     11  2014
3      NY  11/22/2014  XXck     11  2014
4      CA  09/25/2016  None      9  2016