繁体   English   中英

如何从 Python 中每行的特定值获取列名

[英]How to get column name from specific value per row in Python

我有一个看起来像这样的 dataframe:

listing_id  price_4 price_5 price_6 price_7 price_8 price_9 min_price
0   42729   173.0   170.0   158.0   140.0   150.0   150.0   140.0
1   23135   184.0   180.0   173.0   150.0   160.0   160.0   150.0
2   138216  141.0   141.0   141.0   148.0   101.0   100.0   100.0
3   164989  146.0   121.0   121.0   121.0   121.0   121.0   121.0
4   301034  144.0   141.0   72.0    53.0    53.0    100.0   53.0

如您所见, min_price 由每行的最小值填充。 我想创建另一个用列名填充的列,其中值是最小值。 例如,第 0 行的值应该是 price_7,第 1 行的值也应该是 price_7,依此类推。 如果可能的话,我很乐意在没有 min_price 列的情况下这样做(我为此创建了它)。

谢谢!

使用DataFrame.filterDataFrame.idxmin

df['new'] = df.filter(like='price_').idxmin(axis=1)
print (df)
   listing_id  price_4  price_5  price_6  price_7  price_8  price_9  \
0       42729    173.0    170.0    158.0    140.0    150.0    150.0   
1       23135    184.0    180.0    173.0    150.0    160.0    160.0   
2      138216    141.0    141.0    141.0    148.0    101.0    100.0   
3      164989    146.0    121.0    121.0    121.0    121.0    121.0   
4      301034    144.0    141.0     72.0     53.0     53.0    100.0   

   min_price      new  
0      140.0  price_7  
1      150.0  price_7  
2      100.0  price_9  
3      121.0  price_5  
4       53.0  price_7  

或者,如果希望所有列都没有首先通过DataFrame.iloc进行切片:

df['new'] = df.iloc[:, 1:].idxmin(axis=1)

或者如果想要所有列没有第一个和最后一个:

df['new'] = df.iloc[:, 1:-1].idxmin(axis=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM