2016-05-12 28 views
-1
import pandas as pd 

df1 = pd.DataFrame({'index': range(6), 
        'Name': ["Swap1", "Swap2", "Swap3", "Swap1", "Swap2", "Swap3"], 
        'LegName': ["pay", "receive", "total", "pay", "receive", "total"], 
        'Metric': ["pv", "pv", "pv", "start", "start", "start"], 
        'result': [1, 2, 3, "1y", "1y", "1y"]}) 

print(df1) 

結果列包含數字和非數字類型。 aggfunc=lambda x: x曾與熊貓0.16和0.17一起工作,但未能達到0.18。當所有數據都是數字時,aggfunc=lambda x: sum(x)將起作用,而當所有數據都是非數字時,aggfunc=lambda x: ' '.join(x)將起作用。但是,如果數字和數字都是數據集,我就會陷入困境。不確定如何在aggfunc中包含條件。所有條目都有獨特的價值。所以實際上不需要聚合。熊貓0.18如何在數據同時包含數字和非數字類型的數據框架

print(df1.pivot_table(values='result', index='index', 
         columns=['Name', 'LegName', 'Metric'], 
         aggfunc=lambda x:x)) 

print(df1.pivot_table(values='result', index='index', 
         columns=['Name', 'LegName', 'Metric'], 
         aggfunc=lambda x: sum(x))) 

print(df1.pivot_table(values='result', index='index', 
         columns=['Name', 'LegName', 'Metric'], 
         aggfunc=lambda x: ' '.join(x))) 

回答

0

這將工作:

In [32]: df1.pivot_table(values='result', index='index', 
    ....:     columns=['Name', 'LegName', 'Metric'], 
    ....:     fill_value=0, 
    ....:     aggfunc='sum') 
Out[32]: 
Name Swap1   Swap2  Swap3 
LegName pay  receive  total 
Metric  pv start  pv start pv start 
index 
0   1  0  0  0  0  0 
1   0  0  2  0  0  0 
2   0  0  0  0  3  0 
3   0 1y  0  0  0  0 
4   0  0  0 1y  0  0 
5   0  0  0  0  0 1y 

,但它並不完全清楚你想達到什麼做的......

+0

謝謝!這工作。我只是試圖用數據透視表以某種方式顯示信息。所有條目都被假定爲唯一的,不需要聚合。謝謝!! – SHK

相關問題