2017-09-18 111 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