web-dev-qa-db-fra.com

comment faire un gauche, droit et milieu d'une chaîne dans un cadre de données de pandas

dans un cadre de données de pandas, comment puis-je appliquer une sorte d'Excel à gauche ('state', 2) pour ne prendre que les deux premières lettres. Idéalement, je veux aussi apprendre à utiliser left, right et mid dans un cadre de données. Il faut donc un équivalent et non un "truc" pour cet exemple spécifique.

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

Je veux avoir ceci:

    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
34
IcemanBerlin

Deux premières lettres pour chaque valeur dans une colonne:

>>> 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

Pour les deux derniers, ce serait df['state'].str[-2:]. Je ne sais pas ce que vous voulez exactement pour le milieu, mais vous pouvez appliquer une fonction arbitraire à une colonne avec la méthode 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
59
alko

En ce qui concerne le milieu, un code de raccourci serait probablement df ['state']. str [3,5]

cela commence à partir du 3ème caractère et vous donne les 3ème et 4ème caractères de la chaîne.

0
r col