为每个唯一 ID 分配相同的值
Assign same value for every unique ID
我有一个 Pandas 数据框,看起来像这样。
Customer ID Customer Name Price_Val ID_value
5015 AXN 17.12 2
5015 AXN 2.08 4
5015 AXN 3.45 3
7315 BXN 2.22 0
7315 BXN 8.46 2
3283 CXN 88 0
3283 CXN 0.46 2
3283 CXN 6.46 4
每个唯一客户都应该有相同的 ID_value。但是从数据框中您可以看到我们有不同的 ID_Value 用于唯一客户 ID。
我们以客户ID 5015为例。
Customer ID Customer Name Price_Val ID_value
5015 AXN 17.12 2
5015 AXN 2.08 4
5015 AXN 3.45 3
对于 5015,您可以看到我们有三个不同的 ID_value。对于所有三个记录,我们需要相同的 ID_value。要确定 ID_value,我们需要从三个记录中找到 最大值 ID_value,并将其分配给 5015 的所有记录作为 ID_value。
对于 5015 客户 ID,最大值 ID_value 将为 4,因此我们需要将 5015 的其他 ID_value 更改为 4。
转换后这是 5015 客户 ID 的样子。
Customer ID Customer Name Price_Val ID_value
5015 AXN 17.12 4
5015 AXN 2.08 4
5015 AXN 3.45 4
对于 7315 Max ID_value 是 2 所以我们需要将该值分配给 7315
的所有 ID_value
7315 BXN 2.22 2
7315 BXN 8.46 2
我需要为每个唯一的客户 ID 执行此操作。我有 800 个不同的唯一客户 id.What 最有效的方法是什么?
使用transform
:
df['ID_value'] = df.groupby('Customer ID')['ID_value'].transform('max')
print(df)
# Output:
Customer ID Customer Name Price_Val ID_value
0 5015 AXN 17.12 4
1 5015 AXN 2.08 4
2 5015 AXN 3.45 4
3 7315 BXN 2.22 2
4 7315 BXN 8.46 2
5 3283 CXN 88.00 4
6 3283 CXN 0.46 4
7 3283 CXN 6.46 4
对于这种特定情况,您应该使用 pandas 中的 transform 函数,因为它将保留原始数据帧并在一行代码中完成。
df['ID_value'] = df.groupby('Customer ID')['ID_value'].transform('max')
我有一个 Pandas 数据框,看起来像这样。
Customer ID Customer Name Price_Val ID_value
5015 AXN 17.12 2
5015 AXN 2.08 4
5015 AXN 3.45 3
7315 BXN 2.22 0
7315 BXN 8.46 2
3283 CXN 88 0
3283 CXN 0.46 2
3283 CXN 6.46 4
每个唯一客户都应该有相同的 ID_value。但是从数据框中您可以看到我们有不同的 ID_Value 用于唯一客户 ID。
我们以客户ID 5015为例。
Customer ID Customer Name Price_Val ID_value
5015 AXN 17.12 2
5015 AXN 2.08 4
5015 AXN 3.45 3
对于 5015,您可以看到我们有三个不同的 ID_value。对于所有三个记录,我们需要相同的 ID_value。要确定 ID_value,我们需要从三个记录中找到 最大值 ID_value,并将其分配给 5015 的所有记录作为 ID_value。
对于 5015 客户 ID,最大值 ID_value 将为 4,因此我们需要将 5015 的其他 ID_value 更改为 4。
转换后这是 5015 客户 ID 的样子。
Customer ID Customer Name Price_Val ID_value
5015 AXN 17.12 4
5015 AXN 2.08 4
5015 AXN 3.45 4
对于 7315 Max ID_value 是 2 所以我们需要将该值分配给 7315
的所有 ID_value7315 BXN 2.22 2
7315 BXN 8.46 2
我需要为每个唯一的客户 ID 执行此操作。我有 800 个不同的唯一客户 id.What 最有效的方法是什么?
使用transform
:
df['ID_value'] = df.groupby('Customer ID')['ID_value'].transform('max')
print(df)
# Output:
Customer ID Customer Name Price_Val ID_value
0 5015 AXN 17.12 4
1 5015 AXN 2.08 4
2 5015 AXN 3.45 4
3 7315 BXN 2.22 2
4 7315 BXN 8.46 2
5 3283 CXN 88.00 4
6 3283 CXN 0.46 4
7 3283 CXN 6.46 4
对于这种特定情况,您应该使用 pandas 中的 transform 函数,因为它将保留原始数据帧并在一行代码中完成。
df['ID_value'] = df.groupby('Customer ID')['ID_value'].transform('max')