2016-10-24 78 views
0

假設您有:列聯表值

import pandas as pd 

x = pd.Series(["A", "B", "A", "A", None, "B", "A", None], dtype = "category") 
y = pd.Series([ 1, 2, 3, None, 1, 2, 3, 2]) 

如果你這樣做pd.crosstab(x, y, dropna = False),您可以:

col_0 1.0 2.0 3.0 
row_0    
A  1 0 2 
B  0 2 0 

其省略了三個(xy)對對哪一個的值爲空。 (參數dropnamisleadingly named。)如何創建包含這些值的應急表,如下表所示?

col_0 1.0 2.0 3.0 NaN 
row_0    
A  1 0 2 1 
B  0 2 0 0 
NaN  1 1 0 0 

回答

1

NaN轉換爲字符串工作嗎?

pd.crosstab(x.replace(np.nan, 'NaN'),y.replace(np.nan, 'NaN'),dropna=False) 

結果:

col_0 1.0 2.0 3.0 NaN 
row_0      
A  1 0 2 1 
B  0 2 0 0 
NaN  1 1 0 0 
+0

我想是這樣的以'Series.map'並沒有爲絕對一系列工作。我甚至不知道有'Series.replace'存在。 – Kodiologist