2017-09-18 60 views
0

我正在用python使用熊猫进行数据透视表的实验,如果单词出现在文本中,而列表中包含1,如果单词不出现,则为0。因此,我在值列期望整数值,但什么我得到这样的输出:熊猫枢轴表为整数列返回十进制值

Athens      0.085366 
Atlantic Time (Canada)  0.545455 
Baghdad      0.457746 
Baku       0.500000 
Beijing      0.000000 
Belgrade      0.000000 
Berlin      0.000000 
Brasilia      0.666667 
Brisbane      0.000000 

我想这可能是采取一些比,而不是总量的,但因为我不传递任何其他参数比数据框,索引和值,我不知道为什么它会这样做。

我有从鸣叫

tweets['timezone'] = list(map(lambda tweet: (tweet['user']['time_zone'] if 'time_zone' != None else None),tweets_data)) 
tweets['ktheer'] = tweets['text'].apply(lambda tweet: word_in_text('كثير', tweet),tweets_data) 

那些JSON代码中创建列的数据框是两列我使用我的数据透视表,这是为了使表的代码:

words_pivot = pd.pivot_table(tweets, index = ['timezone'], values = ['ktheer']) 

任何有关可能出错的想法都非常感谢。我不知道为什么我不会得到整数。

更新:一些玩过后,我敢肯定,问题在于python计算枢轴值作为给定时区中所有观测值的比率。但我仍不确定如何解决问题或导致问题的原因。

回答

1

因为pandas基于numpy,您可能会始终得到浮点结果而不是整数。

pivot_table function的参数为aggfunc,默认为numpy.mean。如果你把它改为numpy.sum你应该得到你想要的。

words_pivot = pd.pivot_table(tweets, index = ['timezone'], values = ['ktheer'], aggfunc=numpy.sum) 
+0

这有效,但我只需要使用aggfunc = sum。 numpy是不必要的。非常感谢! – new2Python05839