数据透视表可填充对大熊猫的观测

时间:2019-02-08 06:59:18

标签: python pandas pivot-table

目标是获得一张值对为T1-T2的表。我有以下形式的数据:

df
    T1  T2  Score
0   A   B   5
1   A   C   8
2   B   C   4

我尝试过:

df.pivot_table('Score','T1','T2')

    B   C       
A   5.0 8.0
B   NaN 4.0

我希望:

  A  B  C
A    5  8
B 5     4
C 8  4  

我觉得有点像相关表。因为在这种情况下A-B对与B-A相同。

3 个答案:

答案 0 :(得分:2)

首先通过交换pivotT1和最后一个reindex,将所有可能的索引值为combine_first的列与另一个T2的列添加:

idx = np.unique(df[['T1','T2']].values.ravel())
df1 = df.pivot_table('Score','T1','T2').reindex(index=idx, columns=idx)
df2 = df.pivot_table('Score','T2','T1').reindex(index=idx, columns=idx)

df = df1.combine_first(df2)
print (df)
      A    B    C
T1               
A   NaN  5.0  8.0
B   5.0  NaN  4.0
C   8.0  4.0  NaN

答案 1 :(得分:0)

另一种使用merge的方法:

df1 = df.pivot_table('Score','T1','T2')
df2 = df.pivot_table('Score','T2','T1')
common_val = np.intersect1d(df['T1'].unique(), df['T2'].unique()).tolist()

df = df1.merge(df2, how='outer', left_index=True, right_index=True, on=common_val)

print(df)
     B    C    A
A  5.0  8.0  NaN
B  NaN  4.0  5.0
C  4.0  NaN  8.0

答案 2 :(得分:0)

另一种方式:

<html>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<table id="myTable">
<tr class="header">
    <th style="width:10%;">Name</th>
    <th style="width:10%;">Lastname</th>
	  <th style="width:10%;">Value</th>
</tr>
 
<tr> 
<td>Deneme</td>
<td>SDeneme</td>
<td class="sira">100</td>
<tr>

<tr> 
<td>Ornek</td>
<td>SOrnek</td>
<td class="sira">150</td>
<tr>

</table>

<button name="siradaki" id="siradaki" class="btn btn-warning" onclick="siradaki();">Sıradaki Kim ?</button>

</html>