例如,我有一個熊貓資料框
| 第 1 列 | Col2 | 第 3 列 |
|---|---|---|
| -1 | 2 | -3 |
我想選擇最小絕對值: table2
| 第 1 列 | Col2 | 第 3 列 | 結果 |
|---|---|---|---|
| -1 | 2 | -3 | -1 |
現在我正在使用df.abs().idxmin(axis="columns"),我得到:table3
| 第 1 列 | Col2 | 第 3 列 | 結果 |
|---|---|---|---|
| -1 | 2 | -3 | 第 1 列 |
我想問一下如何將表3轉換為表2?
uj5u.com熱心網友回復:
使用np.argmin(numpy 對應物DataFrame.idxmin)。由于您要提取原始值,因此在 numpy 級別訪問這些值會更方便。
我在您的 MRE 中添加了一行以進行演示:
cols = np.argmin(df.abs().to_numpy(), axis=1) # [0, 2]
rows = range(len(cols)) # [0, 1]
df['Result'] = df.to_numpy()[rows, cols]
# Col1 Col2 Col3 Result
# 0 -1 2 -3 -1
# 1 10 -5 4 4
uj5u.com熱心網友回復:
您可以使用 df.abs().min(axis=1)
>>> import pandas as pd
>>>
>>> data = {'col1': [1], 'col2': [2], 'col3': [-3]}
>>> df = pd.DataFrame(data)
>>> df
col1 col2 col3
0 1 2 -3
>>> df['Result'] = df.abs().min(axis=1)
>>> df
col1 col2 col3 Result
0 1 2 -3 1
uj5u.com熱心網友回復:
嘗試:
df = pd.read_clipboard()
print(df)
# Col1 Col2 Col3
# 0 -1 2 -3
df['Result'] = df.abs().idxmin(axis=1)
print(df)
# Col1 Col2 Col3 Result
# 0 -1 2 -3 Col1
df['Result'] = df.loc[:, df['Result']]
print(df)
# Col1 Col2 Col3 Result
# 0 -1 2 -3 -1
輸出:
Col1 Col2 Col3 Result
0 -1 2 -3 -1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/369014.html
