我有一个大约有 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(使用前将#替换为@)