我有一個如下的資料框,
import pandas as pd
d ={'col1': [1, 2, 5], 'col2': [3, 4, 2], 'col3': [5, 1, 3]}
data = pd.DataFrame(d)
我想用“max”替換最大值,用“min”替換最小值,用“mid”替換中間值(剩余值)。我做了以下事情:
data.apply(lambda row: row.replace(min(row),'min').replace(max(row), 'max').replace(r'\d ', 'mid', regex=True).astype('str'), axis=1)
雖然它適用于最小值和最大值,但它不適用于中間值,但我不確定我做錯了什么。
uj5u.com熱心網友回復:
用于numpy.selectcomapremax和min每列,如果值不匹配,則分配mid文本:
arr = np.select([data.eq(data.max(axis=1), axis=0),
data.eq(data.min(axis=1), axis=0)], ['max', 'min'], 'mid')
df1 = pd.DataFrame(arr, index=data.index, columns=data.columns)
print (df1)
col1 col2 col3
0 min mid max
1 mid max min
2 max min mid
如果首先轉換為字串,您的代碼將起作用:
df1 = data.apply(lambda row: row.replace(min(row),'min').replace(max(row), 'max').astype('str').replace(r'\d ', 'mid', regex=True), axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/443654.html
上一篇:如何根據動態列值選擇行?
下一篇:如何按順序添加鏈表串列的元素?
