2016-02-29 62 views
0

我有一個數據集,看起來像下面無法將熊貓系列轉換爲int?正則表達式拋出錯誤?

time    a_id  b_id  c_id  d_id probability 
    2015-01-02   237  9712  54  38 [0.194255020142] 
    2015-01-02   131  481  60  42 [0.23631604522] 
    2015-01-02   277  8842  57  46 [0.176149934661] 
    2015-01-02   124  3664  95  48 [0.158623758706] 

目前「概率」列類型的對象。我想將它轉換爲int,以便我可以對其執行一些數學運算。我用下面的代碼

df_total['probability] = df_total['probability'].astype(int) 

但將我一個錯誤是

ValueError: setting an array element with a sequence. 

我由子集轉換的概率的列到列表從numpy的陣列和轉換到列表。代碼如下給出

probability = probs[:,1:] 
probability = probability.tolist() 

我回來的是一個列表,其中元素括在括號內?我不明白爲什麼。

我該如何解決這個問題?

+0

出於某種原因,它看起來像你有一個單一元素的列表,這應該工作:'df_total ['probability] = df_total ['probability'] .application(lambda x:x [0])' – EdChum

+0

Thanks Edchum ,這工作! –

回答

1

看起來你現在的「概率」列值每個都是一個元素的列表?

嘗試類似:

def to_integer(row): 
    prob = row['probability'][0] #0th element of the list is the actual float 
    return int(prob) 
df_total['probability'] = df_total.apply(lambda row: to_integer(row), axis = 1) 
1

鑑於概率是目前以十進制形式,將其轉化爲int將導致零(例如INT(0.99)導致0)的值。在這個例子中,我假設你會想要整數值99。從每個列表中提取單個值:

df['probability'] = [int(100 * i[0]) if i else None for i in df.probability] 

else None部分是有在任何情況下,值丟失。嘗試在None上索引i [0]會引發錯誤。

相關問題