Pandas(python):列中的最大值定义新列中的新值

2024-01-12

我有一个大约有 50 列的 df:

Product ID | Cat1 | Cat2 |Cat3 | ... other columns ...
8937456       0      5     10
8497534       25     3     0
8754392       4      15    7 

Cat 表示该产品有多少数量属于某个类别。现在我想添加一列“类别”,表示产品的主要类别(忽略其他列,只考虑 Cat 列)。

df_goal:

Product ID | Cat1 | Cat2 |Cat3 | Category | ... other columns ...
8937456       0      5     10       3
8497534       25     3     0        1
8754392       4      15    7        2

我想我需要使用 max 并应用或映射?

我在 stackoverflow 上找到了这些,但它们并没有解决类别分配问题。在 Excel 中,我将列从 Cat 1 重命名为 1 并使用索引(match(max))。

Python Pandas 所选列的最大值 https://stackoverflow.com/questions/20033111/python-pandas-max-value-of-selected-columns

我应该如何获取数据框中最多 2 列并将其设为另一列? https://stackoverflow.com/questions/12169170/how-should-i-take-the-max-of-2-columns-in-a-dataframe-and-make-it-another-column

根据组最大值在 DataFrame 列中分配新值 https://stackoverflow.com/questions/37149726/assign-new-value-in-dataframe-column-based-on-group-max


这是 NumPy 的方法numpy.argmax https://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.html -

df['Category'] = df.values[:,1:].argmax(1)+1

要将选择限制为这些列,请专门使用这些列标题/名称,然后使用idxmax最后替换字符串Cat与“空字符串,就像这样 -

df['Category'] = df[['Cat1','Cat2','Cat3']].idxmax(1).str.replace('Cat','')

numpy.argmax or panda's idxmax基本上让我们得到沿轴的最大元素的 ID。

如果我们知道Cat列开始于1st列和结束于4th一、我们可以slice数据框:df.iloc[:,1:4]代替df[['Cat1','Cat2','Cat3']].

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas(python):列中的最大值定义新列中的新值 的相关文章

随机推荐