我有一个大约 50 列的 df:
Product ID | Cat1 | Cat2 |Cat3 | ... other columns ...
8937456 0 5 10
8497534 25 3 0
8754392 4 15 7
Cat 表示该产品有多少数量属于某个类别。现在我想添加一列“类别”,表示产品的主要类别(忽略其他列,只考虑 Cat 列)。
df_目标:
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 max value of selected columns
How should I take the max of 2 columns in a dataframe and make it another column?
最佳答案
这是使用 numpy.argmax
的 NumPy 方法-
df['Category'] = df.values[:,1:].argmax(1)+1
要限制对这些列的选择,请专门使用这些列标题/名称,然后使用 idxmax ,最后将字符串 Cat
替换为“空字符串”,如下所示 -
df['Category'] = df[['Cat1','Cat2','Cat3']].idxmax(1).str.replace('Cat','')
numpy.argmax
或 panda 的 idxmax
基本上为我们提供了沿轴的最大元素的 ID。
如果我们知道 Cat
列的列名称从 1st
列开始,到 4th
列结束,我们可以切片数据帧:df.iloc[:,1:4]
而不是df[['Cat1','Cat2','Cat3']]
.
关于python - Pandas ( python ): max in columns define new value in new column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43330555/