gpt4 book ai didi

python - 按多列排名的 Pandas 数据框(组合键)

转载 作者:行者123 更新时间:2023-12-01 01:43:04 26 4
gpt4 key购买 nike

是否有一种Python式的方法可以通过组合键对下面描述的数据帧进行排序 - 首先通过ORD_DT_KEY,然后通过ORD_TM_KEY,然后通过ORD_KEY;并将排名存储在另一列 ORD_RANK 中?

下面的代码不起作用,因为它创建了 3 个单独的排名,并在我尝试将其分配给单列时抛出错误。

import pandas as pd

#Read orders data stored in a pipe delimeted file
df_raw_orders = pd.read_table("Dummy_order_data.txt", delimiter="|")

print df_raw_orders.head()

df_sorted_orders = df_raw_orders
cols = ['ORD_DT_KEY','ORD_TM_KEY','ORD_KEY']
df_sorted_orders['ORD_RANK'] = df_sorted_orders[cols].rank(method='dense')

输入数据Dummy_order_data.txt如下:

ORD_KEY|ORD_DT_KEY|ORD_TM_KEY|QTY|SKU_KEY
10001|1|0|1|1
10001|1|0|1|2
10001|1|0|1|3
10002|2|0|1|1
10002|2|0|1|3
10003|3|0|1|4
10004|4|0|1|4
10004|4|0|1|5
10005|5|0|1|1
10006|6|0|1|1
10006|6|0|1|4
10007|7|0|1|3
10007|7|0|1|4
10008|8|0|1|5
10009|9|0|1|1
10009|9|0|1|4
10009|9|0|1|5
10010|10|0|2|1
10010|10|0|2|2
10010|10|0|2|3
10011|11|0|1|1
10011|11|0|1|3
10012|12|0|1|4
10012|12|0|1|5
10013|13|0|1|1
10014|14|0|2|1
10014|14|0|2|4

所需输出:

ORD_KEY ORD_DT_KEY  ORD_TM_KEY  SKU_KEY QTY ORD_RANK
10001 1 0 1 1 1
10001 1 0 2 1 1
10001 1 0 3 1 1
10002 2 0 1 1 2
10002 2 0 3 1 2
10003 3 0 4 1 3
10004 4 0 4 1 4
10004 4 0 5 1 4
10005 5 0 1 1 5
10006 6 0 1 1 6
10006 6 0 4 1 6
10007 7 0 3 1 7
10007 7 0 4 1 7
10008 8 0 5 1 8
10009 9 0 1 1 9
10009 9 0 4 1 9
10009 9 0 5 1 9
10010 10 0 1 2 10
10010 10 0 2 2 10
10010 10 0 3 2 10
10011 11 0 1 1 11
10011 11 0 3 1 11
10012 12 0 4 1 12
10012 12 0 5 1 12
10013 13 0 1 1 13
10014 14 0 1 2 14
10014 14 0 4 2 14

最佳答案

因为在你的左边返回了 3 列,所以你必须将它们分配回两个 3 列而不是一列

for x in cols:
df[x + 'rank'] = df[x].rank(method='dense')

关于python - 按多列排名的 Pandas 数据框(组合键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681592/

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