python - 比较单列中的值

标签 python pandas

我有一个列

df = pd.DataFrame({'Name': ['Harry', 'John', 'Peter', 'Stan', 'Petra'], 'Score': [10, 9, 5, 7, 8]})

我可以使用 itertools 来获取矩阵

for a, b in itertools.combinations(df['Score'], 2):
    print (a, b)

返回将每个值与 x 和 y 索引进行比较的矩阵的最佳方式是什么。例如:

      Harry   John   Peter   Stan   Petra
Harry   -       1      5       3       2
John    -1      -      4       2       1
etc....

最佳答案

您可以使用np.subtract.outer使用 DataFrame 构造函数:

df = pd.DataFrame(np.subtract.outer(df['Score'], df['Score']),
                  index=df['Name'], 
                  columns=df['Name'])

广播:

a = df['Score'].values
df = pd.DataFrame(a[:, None] - a, columns = df['Name'], index=df['Name'])

print (df)
Name   Harry  John  Peter  Stan  Petra
Name                                  
Harry      0     1      5     3      2
John      -1     0      4     2      1
Peter     -5    -4      0    -2     -3
Stan      -3    -2      2     0     -1
Petra     -2    -1      3     1      0

关于python - 比较单列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48378015/

相关文章:

c# - IoT Edge 模块 - 远程调试 python 模块问题

python - 达到 EOF 和使用 Unpack 之间的冲突

python - OpenCV 3.1 重映射函数类型值错误

pandas - Python Pandas fillna 与 timedelta

python - 如何处理列名和创建新列

python - Pandas源码导入多个模块

python - Python 中的 bool 加法赋值

python - 数据框中的每个单元格都包含一个值列表 - 如何选择第一个值?

python - Pandas :从一列中为另一列中的每个唯一值获取最高值

python - 在 Python 中复制 %transpose SAS 宏