![](/img/trans.png)
[英]How to get value from specific column in 1 row using Python Pandas?
[英]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.filter
和DataFrame.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.