Python 如何使用np.random.randint创建熊猫数据帧数组,其特定列的值始终大于特定列

Python 如何使用np.random.randint创建熊猫数据帧数组,其特定列的值始终大于特定列,python,pandas,Python,Pandas,我希望列“A”的值始终大于列“B”。请尝试以下操作: import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD')) print(df) df.A, df.B = df[['A', 'B']].max(axis=1), df[['A', 'B']].min(axis=1) 输出: newdf = df.apply(lam

我希望列“A”的值始终大于列“B”。

请尝试以下操作:

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
print(df)
df.A, df.B = df[['A', 'B']].max(axis=1), df[['A', 'B']].min(axis=1)
输出:

newdf = df.apply(lambda x: x if x[0]>x[1] else [*x[:2][::-1],*x[2:]],axis=1)
print(newdf)

您可以将其应用于任何列

     A   B   C   D
0   85  14  22  85
1   62  54  20   1
2   82  78  48  59
3   81  59  54  39
4   92  12  79  44
5   69  64   8  11
6   49  34  48  69
7   68  28  80  27
8   72  17   2  40
9   26  15  49  62
10  29   2  86  12
11  69   7  32  99
12  39  35  65  32
13  45  36  36  12
14  54  21  29  79
15  91  82  35  80
16  67  16   4  37
17  94  82  93  37
18  64  18   2  15
19  13  11  28  82
20  78   9  93  45
21  72  41  16  33
22  92  71  62  69
23  87  79  71  11
24  31  14   8  24
25  85  27  43   3
26  82  34  14  52
27  41  32  39  48
28  13  12  24  86
29  96  17  14  80
..  ..  ..  ..  ..
70  17  13  20  91
71  26   7  57  96
72  41   0  24  58
73  98  68  90  13
74  88  35  81  56
75  65  43  70  86
76  82  81  44  68
77  97  45  23  66
78  81  45  78  48
79  62  24  43  62
80  43  13  42  49
81  97  28  75  45
82   3   0  54  40
83  57  46  16  38
84  87  46  35  13
85  41  13  78  89
86  62  36  94  23
87  84  35  69  93
88  63  18  39   3
89  45  42  30   6
90  81   8  49  82
91  28  28  11  47
92  97  81  49  92
93  86  24  82  40
94  76  72  30  51
95  93  92   1  69
96  97  76  38  81
97  87  49  26  64
98  98  25  93  55
99  57   2  87  10

[100 rows x 4 columns]
它给出以下输出:

import numpy as np
import pandas as pd
#np.random.seed(1)
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
#we are just sorting values of each rows in descending order. 
df.values[:,::-1].sort()
print(df)
     A   B   C   D
0   72  37  12   9
1   79  75  64   5
2   76  71  16   1
3   50  25  20   6
4   84  28  18  11
5   68  50  29  14
6   96  94  87  87
7   86  13   9   7
8   63  61  57  22
9   81  60   1   0
10  88  47  13   8
11  72  71  30   3
12  70  57  49  21
13  68  43  24   3
14  80  76  52  26
15  82  64  41  15
16  98  87  68  25
17  26  25  22   7
18  67  27  23   9
19  83  57  38  37
20  34  32  10   8