Python 建立最大值出现的位置和原因表
我有Python 建立最大值出现的位置和原因表,python,pandas,Python,Pandas,我有pandas数据,其结构由info() 我可以用这样的东西得到一些零碎的东西 >>> usda.Description[usda[['Protein','TotalFat','Sodium','Carbohydrate']].idxmax()] 4660 SOY PROT ISOLATE,K TYPE,CRUDE PROT BASIS 288 FAT,BEEF TALLOW 264
pandas
数据,其结构由info()
我可以用这样的东西得到一些零碎的东西
>>> usda.Description[usda[['Protein','TotalFat','Sodium','Carbohydrate']].idxmax()]
4660 SOY PROT ISOLATE,K TYPE,CRUDE PROT BASIS
288 FAT,BEEF TALLOW
264 SALT,TABLE
6959 SWEETENERS,TABLETOP,FRUCTOSE,DRY,PDR
Name: Description, dtype: object
及
但这是我力所能及的
是否有一种简洁的方法来获取数据集中每个数值列的最大值,并生成一个包含该值、相应的“说明”和找到最大值的列的名称的表?从以下开始:
Description Sodium TotalFat Carbohydrate
0 ABC 1 10 4
1 DEF 2 9 5
2 GHI 3 8 0
[3 rows x 4 columns]
您可以融化类别:
>>> mlt = pd.melt(df, id_vars='Description',
... value_vars=['Sodium', 'TotalFat', 'Carbohydrate'],
... value_name='value', var_name='category')
>>> mlt
Description category value
0 ABC Sodium 1
1 DEF Sodium 2
2 GHI Sodium 3
3 ABC TotalFat 10
4 DEF TotalFat 9
5 GHI TotalFat 8
6 ABC Carbohydrate 4
7 DEF Carbohydrate 5
8 GHI Carbohydrate 0
[9 rows x 3 columns]
>>> mdf = mlt.groupby('category').apply(lambda obj: obj.loc[obj.value.idxmax()])
>>> mdf.reset_index(drop=True)
Description category value
0 DEF Carbohydrate 5
1 GHI Sodium 3
2 ABC TotalFat 10
[3 rows x 3 columns]
然后按类别分组:
>>> mlt = pd.melt(df, id_vars='Description',
... value_vars=['Sodium', 'TotalFat', 'Carbohydrate'],
... value_name='value', var_name='category')
>>> mlt
Description category value
0 ABC Sodium 1
1 DEF Sodium 2
2 GHI Sodium 3
3 ABC TotalFat 10
4 DEF TotalFat 9
5 GHI TotalFat 8
6 ABC Carbohydrate 4
7 DEF Carbohydrate 5
8 GHI Carbohydrate 0
[9 rows x 3 columns]
>>> mdf = mlt.groupby('category').apply(lambda obj: obj.loc[obj.value.idxmax()])
>>> mdf.reset_index(drop=True)
Description category value
0 DEF Carbohydrate 5
1 GHI Sodium 3
2 ABC TotalFat 10
[3 rows x 3 columns]
>>> mdf = mlt.groupby('category').apply(lambda obj: obj.loc[obj.value.idxmax()])
>>> mdf.reset_index(drop=True)
Description category value
0 DEF Carbohydrate 5
1 GHI Sodium 3
2 ABC TotalFat 10
[3 rows x 3 columns]