gpt4 book ai didi

python - 如何置换 Pandas 列的值?

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:38 25 4
gpt4 key购买 nike

我有以下 DataFrame df:

Datetime           Supply   Price
2019-02-01 12:00 10 2.0
2019-02-01 12:00 10 1.0
2019-02-01 12:00 0 5.0
2019-02-01 12:00 10 1.0
2019-02-01 12:00 0 2.0
2019-02-01 12:00 10 4.0
2019-02-01 12:00 0 5.0

Supply 的总和是 40。我需要置换 Suppy 10 以便将它们分配给更高的 Price 值,而 Supply 0 应该出现在 Price 的较低值处。

这是预期的结果:

Datetime           Supply   Price
2019-02-01 12:00 10 2.0
2019-02-01 12:00 0 1.0
2019-02-01 12:00 10 5.0
2019-02-01 12:00 0 1.0
2019-02-01 12:00 0 2.0
2019-02-01 12:00 10 4.0
2019-02-01 12:00 10 5.0

有什么线索吗?

最佳答案

参数排序

  • 乘以负数作为切换排序的便捷方式
  • 使用 argsort 来跟踪我的值的放置位置
  • 创建 b 来存放我的置换值
  • 使用 Supply 的排序版本填充 b
  • 分配回df

a = df.Price.mul(-1).to_numpy().argsort()
b = np.empty_like(df.Supply)

b[a] = df.Supply.sort_values(ascending=False)

df.loc[:, 'Supply'] = b

df

Datetime Supply Price
0 2019-02-01 12:00 10 2.0
1 2019-02-01 12:00 0 1.0
2 2019-02-01 12:00 10 5.0
3 2019-02-01 12:00 0 1.0
4 2019-02-01 12:00 0 2.0
5 2019-02-01 12:00 10 4.0
6 2019-02-01 12:00 10 5.0

这段代码还有优化的空间,但总体思路就在那里。

关于python - 如何置换 Pandas 列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56604401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com