每个可能对的 Pandas 列成对差异

Thi*_*vel 5 dataframe pandas

我有以下数据框。

df = pd.DataFrame([['a', 4], ['b', 1], ['c', 2], ['d', 0], ], columns=['item', 'value'])
df
item | value    
a    | 4
b    | 1
c    | 2
d    | 0 
Run Code Online (Sandbox Code Playgroud)

我想计算每对可能的项目之间的成对绝对差以给出以下输出。

item| a     | b     | c     | d
a   | 0.0   | 3.0   | 2.0   | 4.0
b   | 3.0   | 0.0   | 1.0   | 1.0
c   | 2.0   | 1.0   | 0.0   | 2.0
d   | 4.0   | 1.0   | 2.0   | 0.0
Run Code Online (Sandbox Code Playgroud)

经过大量搜索,我只能找到逐个元素差异的直接答案,这导致单列输出。

到目前为止,我已经尝试过

pd.pivot_table(df, values='value', index='item', columns='item', aggfunc=np.diff)
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

Har*_*der 5

这个问题已经在这里回答。唯一的区别是您需要添加abs

abs(df['value'].values - df['value'].values[:, None])
Run Code Online (Sandbox Code Playgroud)