How to get row-wise absolute minimum value in pandas dataframe
Use np.argmin
(numpy counterpart of DataFrame.idxmin
). Since you want to extract the original values, it's more convenient to access those values at the numpy level.
I added an extra row to your MRE for demonstration:
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
How to find the max, min value of ALL Dataframe [ not values by column neither rows ]
You can try:
max_val = df.max().max()
Get Row and Column with Minimum value in Entire Pandas DataFrame
Use:
a, b = df.stack().idxmin()
print(df.loc[[a], [b]])
C2
R3 0
Another @John Zwinck solution working with missing values - use numpy.nanargmin
:
df = pd.DataFrame(data=[[4,5,6],[2,np.nan,3],[7,0,5],[2,5,3]],
index = ['R1','R2','R3','R4'],
columns=['C1','C2','C3'])
print(df)
C1 C2 C3
R1 4 5.0 6
R2 2 NaN 3
R3 7 0.0 5
R4 2 5.0 3
#https://stackoverflow.com/a/3230123
ri, ci = np.unravel_index(np.nanargmin(df.values), df.shape)
print(df.iloc[[ri], [ci]])
C2
R3 0.0
Computing the minimum value for each row in a Pandas DataFrame
Use pandas.DataFrame.min
with axis=1
:
df['Dmin'] = df.min(axis=1)
min for each row in a data frame
You can use apply
to go through each row
apply(df, 1, FUN = min)
Where 1
means to apply FUN
to each row of df, 2
would mean to apply FUN
to columns.
To remove missing values, use:
apply(df, 1, FUN = min, na.rm = TRUE)
pandas get the row-wise minimum value of two or more columns
If you are trying to get the row-wise mininum
of two or more columns, use pandas.DataFrame.min
. Note that by default axis=0
; specifying axis=1
is necessary.
data['min_c_h'] = data[['flow_h','flow_c']].min(axis=1)
# display(data)
flow_c flow_d flow_h min_c_h
0 82 36 43 43
1 52 48 12 12
2 33 28 77 33
3 91 99 11 11
4 44 95 27 27
5 5 94 64 5
6 98 3 88 88
7 73 39 92 73
8 26 39 62 26
9 56 74 50 50
How to get the indexes of all minimum values in pandas dataframe?
You can use groupby
+transform('min')
:
s = df.stack()
s[s.eq(s.groupby(level=0).transform('min'))]
Output:
x A 0
y A 0
B 0
z B 0
Alternative format:
s = df.stack()
(s[s.eq(s.groupby(level=0).transform('min'))]
.reset_index()
.groupby('level_0')['level_1'].apply(list)
)
Output:
level_0
x [A]
y [A, B]
z [B]
Name: level_1, dtype: object
Substract minimum value of row from each element of row in dataframe,
You can also use the apply
fonction with :
# 1 for the rows
apply(d, 1, function(x){x-min(x)}
# 2 for the columns
apply(d, 2, function(x){x-min(x)}
Related Topics
Why "Character Is Often Preferred to Factor" in Data.Table for Key
Multiplying Vector Combinations
Cannot Install Stringi Since Xcode Command Line Tools Update
Select N Rows Above and Below Match
Making Sure a Function Does Not Use a Global Variable
Using Grepl in R to Search for an Asterisk
How to Do a Glm When "Contrasts Can Be Applied Only to Factors with 2 or More Levels"
How to Subset Column Variables in Df1 Based on the Important Variables I Got in Df2
"Non-Finite Function Value" When Using Integrate() in R
Stargazer Output Appears Below Text - Rmarkdown to PDF
Labelling Points with Ggplot2 and Directlabels
R: Finding the Intersect of Two Lines