Python int和float的异构向量的列类型推断[pandas]

Python int和float的异构向量的列类型推断[pandas],python,pandas,Python,Pandas,我正在为许多不同的维基百科页面计算一些文章指标,比如文章长度和每个部分的引用。这些度量的类型为int或float。我已经把它们存储在一个dict-of-dict中,我不想把它们放进pandas中去创建一些直方图和统计数据。当我尝试填充数据帧时,即使我对所有度量值调用float(),df列的类型仍然是object而不是某个数字类型。当它不是数字类型时,我不能调用列表上的数字操作。如何让pandas将此列识别为数字 arts={“Q774”: {“指标”: {“fr”:{“信息性”:1.350077

我正在为许多不同的维基百科页面计算一些文章指标,比如文章长度和每个部分的引用。这些度量的类型为int或float。我已经把它们存储在一个dict-of-dict中,我不想把它们放进pandas中去创建一些直方图和统计数据。当我尝试填充数据帧时,即使我对所有度量值调用
float()
,df列的类型仍然是object而不是某个数字类型。当它不是数字类型时,我不能调用列表上的数字操作。如何让pandas将此列识别为数字

arts={“Q774”:
{“指标”:
{“fr”:{“信息性”:1.3500775193798449,“参考性”:0.0026265931794695143,“完整性”:202.4,“数字标题”:19,“文章长度”:23224.0},
“en”:{“信息性”:7.602386920360031,“参考性”:0.003673816096835846,“完整性”:308.8,“数字标题”:36,“文章长度”:47090.0},
“sw”:{“信息性”:0.0650467289719626,“参考性”:0.0,“完整性”:18.4000000000000002,“数字标题”:1,“文章长度”:232.0}}
df=pd.DataFrame(列=['qid'、'lang'、'metric'、'val']
对于qid,在arts.iteritems()中具有以下属性:
对于attrib,attribdict.iteritems()中的langdict:
如果attrib=='metrics':
对于lang,langdict.iteritems()中的度量:
对于metric_name,metrics.iteritems()中的metric_val为:
追加({'qid':qid,'lang':lang,'metric':metric_name,'val':float(metric_val)},忽略_index=True)
In[258]:df['val']
出[258]:
0        1.350078
1     0.002626593
2           202.4
3              19
4           23224
5        7.602387
6     0.003673816
7           308.8
8              36
9           47090
10     0.06504673
11              0
12           18.4
13              1
14            232
名称:val,数据类型:object

您确实可以使用
转换对象将其强制转换为float

>>> df = df.convert_objects(convert_numeric=True)
>>> df[:2]
     qid lang           metric           val
0   Q774   fr  informativeness      1.350078
1   Q774   fr    referencerate      0.002627
>>> df.dtypes
qid        object
lang       object
metric     object
val       float64

我还看到了
df.convert\u objects(convert\u numeric=True)
,它似乎并没有按预期将我的列强制转换为浮动,尽管Ipython notebook后来似乎打印得更漂亮。谢谢,我实际上在我的数据上尝试了这一点,但val列仍然是对象。然而,当我启动一个新内核并尝试我自己的示例时,它成功了。我想知道以前在我的内核中发生了什么?哦,好吧。再次感谢。@notfuzzing您可能会忘记重新分配datframe,因为转换没有发生,而是创建了一个新的数据帧。