如何在pandas数据帧中执行字符串的左,右和中间

时间:2014-01-07 11:20:20

标签: python pandas

在pandas数据框中如何应用一种excel左('state',2)只取前两个字母。理想情况下,我想学习如何在数据帧中使用left,right和mid。因此,对于这个具体的例子,需要一个等价的而不是“技巧”。

data = {'state': ['Auckland', 'Otago', 'Wellington', 'Dunedin', 'Hamilton'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
df = pd.DataFrame(data)

print df

     pop       state  year
 0  1.5    Auckland  2000
 1  1.7       Otago  2001
 2  3.6  Wellington  2002
 3  2.4     Dunedin  2001
 4  2.9    Hamilton  2002

我想得到这个:

    pop       state     year  StateInitial
 0  1.5       Auckland    2000     Au
 1  1.7       Otago       2001     Ot
 2  3.6       Wellington  2002     We
 3  2.4       Dunedin     2001     Du
 4  2.9       Hamilton    2002     Ha

2 个答案:

答案 0 :(得分:64)

列中每个值的前两个字母:

>>> df['StateInitial'] = df['state'].str[:2]
>>> df
   pop       state  year StateInitial
0  1.5    Auckland  2000           Au
1  1.7       Otago  2001           Ot
2  3.6  Wellington  2002           We
3  2.4     Dunedin  2001           Du
4  2.9    Hamilton  2002           Ha

最后两个是df['state'].str[-2:]。不知道你想要什么中间,但你可以使用apply方法将任意函数应用于一列:

>>> df['state'].apply(lambda x: x[len(x)/2-1:len(x)/2+1])
0    kl
1    ta
2    in
3    ne
4    il

答案 1 :(得分:2)

关于中间,大概是一个捷径         df ['state']。str [3,5]

这将从第3个字符开始,并为您提供字符串的第3个和第4个字符。