2017-05-05 118 views
1

的「潛臺詞」我有我的數據框下面列有intdtype的Python /大熊貓 - 整數

Time 
201311040040 
201311040050 
201311110000 
201311110010 

由此,我想提出一個新列,只有有前8個數字表示爲int,例如。我想:

Time   Day 
201311040040 20131104 
201311040050 20131104 
201311110000 20131111 
201311110010 20131111 

對於這一點,我使用:

df["Day"] = (df.Time.astype(str)[0:8]).astype(int) 

然而,這給了我:

Time   Day 
201311040040 2.013111e+11 
201311040050 2.013111e+11 
201311110000 NaN 
201311110010 NaN 

首先,請問這是怎麼回NaN值??什麼是正確的做法?謝謝!

+0

'DF [ 「日」] = DF [ '時間'] STR [:8]' – MaxU

回答

1
In [175]: df['Day'] = df['Time'] // 10**4 

In [176]: df 
Out[176]: 
      Time  Day 
0 201311040040 20131104 
1 201311040050 20131104 
2 201311110000 20131111 
3 201311110010 20131111 
0
這裏

部分(df.Time.astype(str)[0:8])應當重新,一個解決方案可能是:

df = pd.DataFrame([201311040040, 
201311040050, 
201311110000, 
201311110010],columns=['Time']) 


df["Day"] = df.Time.astype(str).str.extract('(\d{8})',expand=False) 

df 



    Time Day 
0 201311040040 20131104 
1 201311040050 20131104 
2 201311110000 20131111 
3 201311110010 20131111