Používam Python 2.7 a moje údaje vyzerajú takto:
import pandas as pd
df = pd.DataFrame({ "DateVar" : ["9/1/2013", "10/1/2013", "2/1/2014"],
"Field" : "foo" })
Chcem analyzovať DateVar a vytvoriť 2 nové polia: pole „mesiac“ a „rok“.
Bol som schopný tokenize "DateVar" pomocou vektorovej metódy reťazca:
df.DateVar.str.split("/")
Toto je o niečo bližšie k tomu, čo chcem, a potom som sa pokúsil o ďalšie rozdelenie mesiacov [9, 10, 2] pomocou nasledujúceho kódu:
df.DateVar.str.split("/")[0]
Ale nečakane dostávam:
["9", "1", "2013"]
Ako teda môžem získať vektor všetkých mesiacov?
odpovede:
1 pre odpoveď č. 1Ak potrebujete iba jeden stĺpec, môžete použiť:
df.DateVar.str.split("/").str[0]
Ak potrebujete stĺpec mesiac a deň, použite str.extract
:
import pandas as pd
df = pd.DataFrame({ "DateVar" : ["9/1/2013", "10/1/2013", "2/1/2014"],
"Field" : "foo" })
print df.DateVar.str.extract(r"(?P<month>d+)/(?P<day>d+)/d+").astype(int)
výstup:
month day
0 9 1
1 10 1
2 2 1
0 pre odpoveď č. 2
Je to preto, že
>>> df.DateVar.str.split("/")
0 [9, 1, 2013]
1 [10, 1, 2013]
2 [2, 1, 2014]
tak
>>> df.DateVar.str.split("/")[0]
["9", "1", "2013"]
0 pre odpoveď č. 3
v = [x[0] for x in df.DateVar.str.split("/")]