熊猫价格分析

问题描述 投票:0回答:3

早上好,我需要帮助,我需要创建一个分析,为我提供每条线的最低价值,以及哪个供应商的价值最高。

import pandas as pd
data = {'CODBAR':[29951,29952,29953],'DESCRI':['IPHONE 15','SAMSUNG S40','MOTOROLA G1000'],'PRICE_PROVIDER1':[1000.00,1200.00,1100.00],'PRICE_PROVIDER2':[999.00,1299.00,1199.00],'PRICE_PROVIDER3':[1199.00,1199.00,999.00]}
df = pd.DataFrame(data)
df.head()
CODBAR  DESCRI  PRICE_PROVIDER1 PRICE_PROVIDER2 PRICE_PROVIDER3
0   29951   IPHONE 15   1000.0  999.0   1199.0
1   29952   SAMSUNG S40 1200.0  1299.0  1199.0
2   29953   MOTOROLA G1000  1100.0  1199.0  999.0

我想逐行查找最低值,以及哪个供应商具有最低值,并使用这些数据创建一个新的数据框,以便我们可以继续处理采购订单。 如果有人有任何想法,我将非常感激。

python pandas dataframe
3个回答
1
投票

您可以使用

idxmin
查找每行具有最小值的 ,并使用
min
查找每行的最小值

import pandas as pd

data = {'CODBAR':[29951,29952,29953],'DESCRI':['IPHONE 15','SAMSUNG S40','MOTOROLA G1000'],'PRICE_PROVIDER1':[1000.00,1200.00,1100.00],'PRICE_PROVIDER2':[999.00,1299.00,1199.00],'PRICE_PROVIDER3':[1199.00,1199.00,999.00]}

df = pd.DataFrame(data)

# Select only the numerical columns
df_num = df.select_dtypes(include=['float64'])

# Find the column with the minimum value for each row
min_col = df_num.idxmin(axis=1)

# Find the minimum value itself
min_val = df_num.min(axis=1)

# Create a new dataframe with the CODBAR, DESCRI, and minimum value and provider
result = pd.DataFrame({'CODBAR': df['CODBAR'], 'DESCRI': df['DESCRI'], 'MIN_VALUE': min_val, 'PROVIDER': min_col})

print(result)

输出:

   CODBAR          DESCRI  MIN_VALUE         PROVIDER
0   29951       IPHONE 15      999.0  PRICE_PROVIDER2
1   29952     SAMSUNG S40     1199.0  PRICE_PROVIDER3
2   29953  MOTOROLA G1000      999.0  PRICE_PROVIDER3

0
投票

您可以一次找到多个聚合。您可以输入计数、总和、平均值、标准差等。这是最小值和最大值。

import pandas as pd

data = {'CODBAR':[29951,29952,29953],'DESCRI':['IPHONE 15','SAMSUNG S40','MOTOROLA G1000'],'PRICE_PROVIDER1':[1000.00,1200.00,1100.00],'PRICE_PROVIDER2':[999.00,1299.00,1199.00],'PRICE_PROVIDER3':[1199.00,1199.00,999.00]}

df = pd.DataFrame(data)
df

df[['PRICE_PROVIDER1', 'PRICE_PROVIDER2', 'PRICE_PROVIDER3']].agg(['min', 'max'])

enter image description here


0
投票
import pandas as pd

data = {'CODBAR':[29951,29952,29953],'DESCRI':['IPHONE 15','SAMSUNG S40','MOTOROLA G1000'],'PRICE_PROVIDER1':[1000.00,1200.00,1100.00],'PRICE_PROVIDER2':[999.00,1299.00,1199.00],'PRICE_PROVIDER3':[1199.00,1199.00,999.00]}

df = pd.DataFrame(data)
print(df)
############################# given data
##   CODBAR          DESCRI  PRICE_PROVIDER1  PRICE_PROVIDER2  PRICE_PROVIDER3
##   29951       IPHONE 15           1000.0            999.0           1199.0
##   29952     SAMSUNG S40           1200.0           1299.0           1199.0
##   29953  MOTOROLA G1000           1100.0           1199.0            999.0
########################################

df['best_price'] = df.iloc[:, 2:].min(axis=1)
print(df)

df['best supplier'] = df.iloc[:, 2:].idxmin(axis=1)
print(df)

######################## res
##   CODBAR          DESCRI  ...  best_price    best supplier
##   29951       IPHONE 15  ...       999.0  PRICE_PROVIDER2
##   29952     SAMSUNG S40  ...      1199.0  PRICE_PROVIDER3
##   29953  MOTOROLA G1000  ...       999.0  PRICE_PROVIDER3
############################
© www.soinside.com 2019 - 2024. All rights reserved.