2017-10-13 132 views
0

我有一個數據幀,DF,與一列::轉換熊貓系列字符串爲浮動

print(df['MJD_DUPLICATE']) 

0   (0, 56238, -1, -1, -1, -1, -1, -1, -1, -1, -1,... 
1   (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1... 
2   (0, 56269, -1, -1, -1, -1, -1, -1, -1, -1, -1,... 

簡單地說,我該如何將它轉換爲一個浮動,以繪製它呢?

b = df.astype(float) 

不工作也不做:

for i in range(len(mjds)): 
    mjds[i] = [float(x) for x in mjds[i]] 

謝謝!

N.B。::

print(df['MJD_DUPLICATE'][0:][0:0]) 

(0, 56279, 0, 56539, 0, 56957, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1) 
Series([], Name: MJD_DUPLICATE, dtype: object) 
+0

爲什麼你需要轉換爲浮點圖? – wwii

+0

因爲否則我得到一個「ValueError:scatter需要y列爲數字」錯誤 – npross

+0

元組中的值不是*數字*? – wwii

回答

0

你嘗試在這是一個浮動的數據幀創建一個新的列,然後針對密謀?

df['MJD_DUPLICATE_float'] = df['MJD_DUPLICATE'].astype(float) 
+0

是的,試過這個。 Got :: ValueError:無法將字符串轉換爲float:'(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - 1,-1,-1,-1,-1,-1)' – npross

+0

我會嘗試然後:df.convert_objects(convert_numeric = True)。您可以檢查他們使用的轉換類型; df.convert_objects(convert_numeric = True).dtypes – mpmartin618

+0

不,這也行不通。看到上面的編輯。 – npross

0

編寫變換各行值的函數,然後使用.apply()

data = {'a':[(' 1 ',' 2 ',' 3 '), ('2','3','4'), (3,4,5)], 
     'b':[('1','2','3'), ('2','3','4'), ('3','4','5')]} 

df = pd.DataFrame(data) 

def f(thing): 
    return tuple(float(n) for n in thing) 

converted = df['a'].apply(f) 
df['a'] = converted 



>>> converted 
0 (1.0, 2.0, 3.0) 
1 (2.0, 3.0, 4.0) 
2 (3.0, 4.0, 5.0) 
Name: a, dtype: object 
>>> df 
       a   b 
0 (1.0, 2.0, 3.0) (1, 2, 3) 
1 (2.0, 3.0, 4.0) (2, 3, 4) 
2 (3.0, 4.0, 5.0) (3, 4, 5) 
>>> 

如果您的數據看起來像這樣

data = {'a':['''(1,2,3)''', '''(2,3,4)''', '''(3,4,5)'''], 
     'b':['''(1,2,3)''', '''(2,3,4)''', '''(3,4,5)''']} 

改變你的函數來處理它

def f(thing): 
     thing = thing.strip() 
     thing = thing.replace('(', '') 
     thing = thing.replace(')', '') 
     thing = thing.split(',') 
     return tuple(float(n) for n in thing) 
+0

我得到一個::「ValueError:無法將字符串轉換爲浮點數:'('error – npross

+0

我將元組中的每個元素都更改爲字符串,甚至添加了空格,並且仍然有效。如果你的數據有其他*問題*,你需要確定它們是什麼,並在你正在申請的函數中處理它們。 – wwii

+0

好的,所以上面的代碼運行和工作,但我仍然無法繪製任何東西... – npross