Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Find minimum delta between two cells for each column in pandas

Given a dataframe (e.g.)

df = pd.DataFrame({"A": [9, 6, 9, 4, 5], "B": [8, 2, 9, 7, 3], "C": [0, 9, 3, 15, 5],})

I’d like to return a dataframe with columns A, B, C and a single row, where the row value is the smallest absolute delta between the cells in A, B, C (e.g.)

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

df_result = pd.DataFrame(
    {
        "A": [0], # 9-9
        "B": [1], # 2-3, 9-8, 8-7
        "C": [2], # 5-3
    }
)

I’d like to do this generally. That is take in a dataframe then find the delta between all the cells except itself, and find the minimum value. Then that over each column. Then return a dataframe with the same columns and one row which contains the absolute value of the mininmum delta.

>Solution :

You can sort_values then compute the diff and finally get the min value:

>>> df.agg(lambda x: x.sort_values().diff().min())
A    0.0
B    1.0
C    2.0
dtype: float64

Example for A:

>>> df['A'].sort_values()
3    4
4    5
1    6
0    9
2    9
Name: A, dtype: int64

>>> df['A'].sort_values().diff()
3    NaN
4    1.0
1    1.0
0    3.0
2    0.0
Name: A, dtype: float64

>>> df['A'].sort_values().diff().min()
0.0
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading