아래와 같은 행렬이 있고 열 COL01-04의 최소값과 해당 열의 이름 (NaN 제외)으로 2 개의 열을 더 만들어야합니다.
In[1]: matrix
Out[1]:
ID COL01 COL02 COL03 COL04
0 0001 NaN 1662 1583 1697.4
1 0002 NaN 1006 1476 1018.44
2 0003 1452 1487 2197.5 1516.27
3 0004 NaN 1554 2298 1585.62
이렇게 :
ID COL01 COL02 COL03 COL04 Min_val Min_col
0 0001 NaN 1662 1583 1697.4 1583 COL03
1 0002 NaN 1006 1476 1018.44 1006 COL02
2 0003 1452 1487 2197.5 1516.27 1452 COL01
3 0004 NaN 1554 2298 1585.62 1554 COL02
나는 이미 시도했다
for i in range(0, len(matrix)):
matrix['Min_val'] = matrix[['COL01', 'COL02', 'COL03', 'COL04']].min()
그러나 결과는 NaN
어디에나 있습니다 numpy.float64
.
행당 값을 확인 하려면 DataFrame.min
및 DataFrame.idxmin
with axis=1
를 사용하십시오 .
c = ['COL01', 'COL02', 'COL03', 'COL04']
matrix[c] = matrix[c].apply(lambda x: pd.to_numeric(x, errors='coerce'))
matrix['Min_val'] = matrix[c].min(axis=1)
matrix['Min_col'] = matrix[c].idxmin(axis=1)
또는 새 열의 경우 DataFrame.assign
다음을 사용하십시오 .
matrix = matrix.assign(Min_val = matrix[c].min(axis=1), Min_col=matrix[c].idxmin(axis=1))
print (matrix)
ID COL01 COL02 COL03 COL04 Min_val Min_col
0 1 NaN 1662 1583.0 1697.40 1583.0 COL03
1 2 NaN 1006 1476.0 1018.44 1006.0 COL02
2 3 1452.0 1487 2197.5 1516.27 1452.0 COL01
3 4 NaN 1554 2298.0 1585.62 1554.0 COL02
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다