Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对于每一行,返回最小值的列名-熊猫_Python_Pandas_List_Max_Min - Fatal编程技术网

Python 对于每一行,返回最小值的列名-熊猫

Python 对于每一行,返回最小值的列名-熊猫,python,pandas,list,max,min,Python,Pandas,List,Max,Min,假设我有一个具有以下值的数据帧: id product1sold product2sold product3sold 1 2 3 3 2 0 0 5 3 3 2 1 如何在每个id的列表中添加包含所有最畅销和最畅销产品的“最畅销”和“最畅销”列? 应该是这样的 id product1 prod

假设我有一个具有以下值的数据帧:

id    product1sold   product2sold   product3sold
1     2              3              3
2     0              0              5
3     3              2              1
如何在每个id的列表中添加包含所有最畅销和最畅销产品的“最畅销”和“最畅销”列? 应该是这样的

id    product1   product2   product3    most_sold                least_sold
1        2          3          3        [product2, product3]      [product1]     
2        0          0          5        [product3]                [product1, product2]
3        3          2          1        [product1]                [product3]

使用列表理解测试产品列表的最小值和最大值:

#select all columns without first
df1 = df.iloc[:, 1:]
cols = df1.columns.to_numpy()

df['most_sold'] = [cols[x].tolist() for x in df1.eq(df1.max(axis=1), axis=0).to_numpy()]
df['least_sold'] = [cols[x].tolist() for x in df1.eq(df1.min(axis=1), axis=0).to_numpy()]
print (df)
   id  product1sold  product2sold  product3sold                     most_sold  \
0   1             2             3             3  [product2sold, product3sold]   
1   2             0             0             5                [product3sold]   
2   3             3             2             1                [product1sold]   

                     least_sold  
0                [product1sold]  
1  [product1sold, product2sold]  
2                [product3sold]  
如果性能不重要,则可以使用:


你可以这样做

id    product1   product2   product3    most_sold                least_sold
1        2          3          3        [product2, product3]      [product1]     
2        0          0          5        [product3]                [product1, product2]
3        3          2          1        [product1]                [product3]
minValueCol=yourDataFrame.idxmin(axis=1)
maxValueCol=yourDataFrame.idxmax(axis=1)