早上好,我需要帮助,我需要创建一个分析,为我提供每条线的最低价值,以及哪个供应商的价值最高。
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
我想逐行查找最低值,以及哪个供应商具有最低值,并使用这些数据创建一个新的数据框,以便我们可以继续处理采购订单。 如果有人有任何想法,我将非常感激。
您可以使用
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
您可以一次找到多个聚合。您可以输入计数、总和、平均值、标准差等。这是最小值和最大值。
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'])
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
############################