2015-06-15 93 views
3

我有以下數據:如何在數據框中添加列?

實施例:

DRIVER_ID;時間戳; POSITION

156; 2014年2月1日00:00:00.739166 + 01;要點(41.8836718276551 12.4877775603346)

我想創建一個有id,時間,經度,緯度的4列的熊貓數據框。 到目前爲止,我得到:

cur_cab = pd.DataFrame.from_csv(
      path, 
      sep=";", 
      header=None, 
      parse_dates=[1]).reset_index() 
cur_cab.columns = ['cab_id', 'datetime', 'point'] 

path指定包含數據的.txt文件。 我已經寫了一個函數,它返回來自點格式字符串的經度和緯度值。 如何使用附加列和分隔值擴展數據框?

回答

2

加載後,如果您使用的是最新的熊貓版本,那麼你可以使用矢量化str方法來分析柱:

In [87]: 
df['pos_x'], df['pos_y']= df['point'].str[6:-1].str.split(expand=True) 
df 

Out[87]: 
    cab_id     datetime \ 
0  156 2014-01-31 23:00:00.739166 

             point pos_x pos_y 
0 POINT(41.8836718276551 12.4877775603346)  0  1 

也應停止使用from_csv它不再更新,使用頂級read_csv所以你的加載代碼將是:

cur_cab = pd.read_csv(
      path, 
      sep=";", 
      header=None, 
      parse_dates=[1], 
      names=['cab_id', 'datetime', 'point'], 
      skiprows=1) 
+0

是否有一個特別的原因爲什麼你添加skiprows? – Pete

+0

,因爲你通過'header = None'它認爲你的標題行是數據,我們必須跳過那一行,所以它不會將它解析爲數據 – EdChum

+0

但我實際上沒有標題。這就是爲什麼我首先使用了'header = None'的原因;) – Pete