我有以下数据框。
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)
但这不起作用。
这个问题已经在这里回答。唯一的区别是您需要添加abs
:
abs(df['value'].values - df['value'].values[:, None])
Run Code Online (Sandbox Code Playgroud)