我有一个数据框:

product cost
0 product a 56
1 product b 59
2 product c 104

我想做一个百分比变化矩阵,如下所示:

product a product b product c
product a -5.08% -46.15%
product b 5.36% -43.30%
product c 85.71% 76.27%

可能有n种产品.

  1. 如何使用Pandas?

  2. 如何获得最高/最低百分比的更改产品?即最高:产品a与产品c.最低:产品c与产品a.

谢谢你的帮助.

推荐答案

Use broadcasting:

# convert columns to arrays
idx = df['product'].to_numpy()
cost = df['cost'].to_numpy()

# compute the percentage change using broadcasting
# convert to DataFrame
out = pd.DataFrame(((cost[:,None]-cost)/cost*100).round(2),
                   index=idx, columns=idx)

# optional, set NaNs in the diagonal
np.fill_diagonal(out.values, np.nan)

print(out)

输出:

           product a  product b  product c
product a        NaN      -5.08     -46.15
product b       5.36        NaN     -43.27
product c      85.71      76.27        NaN

Python相关问答推荐

在Python中使用readline函数时如何向下行

想要使用Polars groupby_Dynamic来缩减时间序列收件箱(包括空垃圾箱)

使用matplotlib pcolormesh,如何停止从一行绘制的磁贴连接到上下行?

Image Font生成带有条形码Code 128的条形码时出现枕头错误OSErsor:无法打开资源

Python中的函数中是否有充分的理由接受float而不接受int?

如何通过多2多字段过滤查询集

在内部列表上滚动窗口

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

替换字符串中的多个重叠子字符串

抓取rotowire MLB球员新闻并使用Python形成表格

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

在Python中管理打开对话框

PyQt5,如何使每个对象的 colored颜色 不同?'

DataFrames与NaN的条件乘法

如果值发生变化,则列上的极性累积和

在ubuntu上安装dlib时出错

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

启动带有参数的Python NTFS会导致文件路径混乱

python panda ExcelWriter切换动态公式到数组公式

在Admin中显示从ManyToMany通过模型的筛选结果