转换熊猫系列字符串为浮动
我有一个数据帧,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)
你尝试在这是一个浮动的数据帧创建一个新的列,然后针对密谋?
df['MJD_DUPLICATE_float'] = df['MJD_DUPLICATE'].astype(float)
是的,试过这个。 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
我会尝试然后:df.convert_objects(convert_numeric = True)。您可以检查他们使用的转换类型; df.convert_objects(convert_numeric = True).dtypes – mpmartin618
不,这也行不通。看到上面的编辑。 – npross
编写变换各行值的函数,然后使用.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)
为什么你需要转换为浮点图? – wwii
因为否则我得到一个“ValueError:scatter需要y列为数字”错误 – npross
元组中的值不是*数字*? – wwii