2017-04-24 22 views
0

我在python中有以下代碼。這產生了美麗的數據框:從數據表中獲取linspace的列表

df=pd.read_csv('spt.csv') 

df1 = df[['TRACK_ID','POSITION_X','POSITION_Y','POSITION_T']].copy() 

N = df1.groupby('TRACK_ID').size()   
max_time = (df1.groupby(['TRACK_ID'],sort=False)['POSITION_T'].size())*(0.062) 
frames = max_time/N 



data = pd.DataFrame({'N':N,'max_time':max_time,'frames':frames}) 
print(data) 

       N frames max_time 
TRACK_ID      
0   50 0.062  3.100 
1   42 0.062  2.604 
2   49 0.062  3.038 
3   4 0.062  0.248 
4   21 0.062  1.302 
5   15 0.062  0.930 
6   11 0.062  0.682 
7   4 0.062  0.248 
8   10 0.062  0.620 
9   7 0.062  0.434 

然後我請嘗試使用我的數據框的參數,以產生一個linspace:

t=data.apply(np.linspace(0,max_time,N), axis=1) 

這將產生錯誤:

"{0}".format(str(converter))) 

TypeError: cannot convert the series to <class 'int'> 

我已經改變浮動和沒有任何變化,請有人可以解決正確的方式來產生一個使用DataFrame參數的linspace列表?

+0

「data.apply(np.linspace(0,max_time,N),axis = 1)」你想要的輸出是什麼? – Allen

+0

我想要產生從0到max_time除以N個間隔的系列。對於第一行(TRACK_ID = 0)會是:[0,0.062,0.124,0.186 ......... 3.1] –

回答

0

這是你在追求什麼? (根據評論來更新,從0.062開始的bin)

data.apply(lambda x: tuple(np.linspace(0.062,x.max_time,x.N)),axis=1) 
Out[722]: 
0 (0.062, 0.124, 0.186, 0.248, 0.31, 0.372, 0.43... 
1 (0.062, 0.124, 0.186, 0.248, 0.31, 0.372, 0.43... 
2 (0.062, 0.124, 0.186, 0.248, 0.31, 0.372, 0.43... 
3       (0.062, 0.124, 0.186, 0.248) 
4 (0.062, 0.124, 0.186, 0.248, 0.31, 0.372, 0.43... 
5 (0.062, 0.124, 0.186, 0.248, 0.31, 0.372, 0.43... 
6 (0.062, 0.124, 0.186, 0.248, 0.31, 0.372, 0.43... 
7       (0.062, 0.124, 0.186, 0.248) 
8 (0.062, 0.124, 0.186, 0.248, 0.31, 0.372, 0.43... 
9  (0.062, 0.124, 0.186, 0.248, 0.31, 0.372, 0.434) 
dtype: object 
+0

差不多!!每行必須取N列中每列的值:在我的數據框架例子N = [50,42,49 ..... 10,7]中,所有系列將相同,但長度不同 –

+0

剛剛更新我的答案。 – Allen

+0

偉大的方法!但爲什麼最後的價值略有增加? –