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