Python将根据条件添加最大柱基

Python将根据条件添加最大柱基,python,pandas,Python,Pandas,这是我的一号桌 Time A B C D 1:00:00 1 5 4 3 2:00:00 2 9 5 2 3:00:00 3 3 3 1 4:00:00 4 1 9 3 5:00:00 5 3 3 5 6:00:00 6 4 4 4 7:00:00 7 6 5 8 8:00:00 8 7 6 6 如何添加最大

这是我的一号桌

Time       A    B   C   D

1:00:00     1   5   4   3
2:00:00     2   9   5   2
3:00:00     3   3   3   1
4:00:00     4   1   9   3
5:00:00     5   3   3   5
6:00:00     6   4   4   4
7:00:00     7   6   5   8
8:00:00     8   7   6   6
如何添加最大列,如下所示

Time       A    B   C   D   A Max    B Max  C Max   D Max

1:00:00     1   5   4   3               
2:00:00     2   9   5   2             9     
3:00:00     3   3   3   1               
4:00:00     4   1   9   3                     9 
5:00:00     5   3   3   5               
6:00:00     6   4   4   4               
7:00:00     7   6   5   8                             8
8:00:00     8   7   6   6     8         
这是我的简单代码

df = pd.DataFrame(data=df, columns=['A','B','C','D'])
max = df.groupby(['Datetime']).agg(A_Max=pd.NamedAgg(column='A', aggfunc='max'))
您可以尝试:

s = df.iloc[:, 1:]

df.join(s.where(s.eq(s.max())).add_suffix(' Max')) 
输出:

      Time  A  B  C  D  A Max  B Max  C Max  D Max
0  1:00:00  1  5  4  3    NaN    NaN    NaN    NaN
1  2:00:00  2  9  5  2    NaN    9.0    NaN    NaN
2  3:00:00  3  3  3  1    NaN    NaN    NaN    NaN
3  4:00:00  4  1  9  3    NaN    NaN    9.0    NaN
4  5:00:00  5  3  3  5    NaN    NaN    NaN    NaN
5  6:00:00  6  4  4  4    NaN    NaN    NaN    NaN
6  7:00:00  7  6  5  8    NaN    NaN    NaN    8.0
7  8:00:00  8  7  6  6    8.0    NaN    NaN    NaN
      Time  A  B  C  D  A MaxMin  B MaxMin  C MaxMin  D MaxMin
0  1:00:00  1  5  4  3       1.0       NaN       NaN       NaN
1  2:00:00  2  9  5  2       NaN       9.0       NaN       NaN
2  3:00:00  3  3  3  1       NaN       NaN       3.0       1.0
3  4:00:00  4  1  9  3       NaN       1.0       9.0       NaN
4  5:00:00  5  3  3  5       NaN       NaN       3.0       NaN
5  6:00:00  6  4  4  4       NaN       NaN       NaN       NaN
6  7:00:00  7  6  5  8       NaN       NaN       NaN       8.0
7  8:00:00  8  7  6  6       8.0       NaN       NaN       NaN

更新:对于最小值和最大值:

df.join(s.where(s.eq(s.max())|s.eq(s.min())).add_suffix(' MaxMin')) 
输出:

      Time  A  B  C  D  A Max  B Max  C Max  D Max
0  1:00:00  1  5  4  3    NaN    NaN    NaN    NaN
1  2:00:00  2  9  5  2    NaN    9.0    NaN    NaN
2  3:00:00  3  3  3  1    NaN    NaN    NaN    NaN
3  4:00:00  4  1  9  3    NaN    NaN    9.0    NaN
4  5:00:00  5  3  3  5    NaN    NaN    NaN    NaN
5  6:00:00  6  4  4  4    NaN    NaN    NaN    NaN
6  7:00:00  7  6  5  8    NaN    NaN    NaN    8.0
7  8:00:00  8  7  6  6    8.0    NaN    NaN    NaN
      Time  A  B  C  D  A MaxMin  B MaxMin  C MaxMin  D MaxMin
0  1:00:00  1  5  4  3       1.0       NaN       NaN       NaN
1  2:00:00  2  9  5  2       NaN       9.0       NaN       NaN
2  3:00:00  3  3  3  1       NaN       NaN       3.0       1.0
3  4:00:00  4  1  9  3       NaN       1.0       9.0       NaN
4  5:00:00  5  3  3  5       NaN       NaN       3.0       NaN
5  6:00:00  6  4  4  4       NaN       NaN       NaN       NaN
6  7:00:00  7  6  5  8       NaN       NaN       NaN       8.0
7  8:00:00  8  7  6  6       8.0       NaN       NaN       NaN
您可以尝试:

s = df.iloc[:, 1:]

df.join(s.where(s.eq(s.max())).add_suffix(' Max')) 
输出:

      Time  A  B  C  D  A Max  B Max  C Max  D Max
0  1:00:00  1  5  4  3    NaN    NaN    NaN    NaN
1  2:00:00  2  9  5  2    NaN    9.0    NaN    NaN
2  3:00:00  3  3  3  1    NaN    NaN    NaN    NaN
3  4:00:00  4  1  9  3    NaN    NaN    9.0    NaN
4  5:00:00  5  3  3  5    NaN    NaN    NaN    NaN
5  6:00:00  6  4  4  4    NaN    NaN    NaN    NaN
6  7:00:00  7  6  5  8    NaN    NaN    NaN    8.0
7  8:00:00  8  7  6  6    8.0    NaN    NaN    NaN
      Time  A  B  C  D  A MaxMin  B MaxMin  C MaxMin  D MaxMin
0  1:00:00  1  5  4  3       1.0       NaN       NaN       NaN
1  2:00:00  2  9  5  2       NaN       9.0       NaN       NaN
2  3:00:00  3  3  3  1       NaN       NaN       3.0       1.0
3  4:00:00  4  1  9  3       NaN       1.0       9.0       NaN
4  5:00:00  5  3  3  5       NaN       NaN       3.0       NaN
5  6:00:00  6  4  4  4       NaN       NaN       NaN       NaN
6  7:00:00  7  6  5  8       NaN       NaN       NaN       8.0
7  8:00:00  8  7  6  6       8.0       NaN       NaN       NaN

更新:对于最小值和最大值:

df.join(s.where(s.eq(s.max())|s.eq(s.min())).add_suffix(' MaxMin')) 
输出:

      Time  A  B  C  D  A Max  B Max  C Max  D Max
0  1:00:00  1  5  4  3    NaN    NaN    NaN    NaN
1  2:00:00  2  9  5  2    NaN    9.0    NaN    NaN
2  3:00:00  3  3  3  1    NaN    NaN    NaN    NaN
3  4:00:00  4  1  9  3    NaN    NaN    9.0    NaN
4  5:00:00  5  3  3  5    NaN    NaN    NaN    NaN
5  6:00:00  6  4  4  4    NaN    NaN    NaN    NaN
6  7:00:00  7  6  5  8    NaN    NaN    NaN    8.0
7  8:00:00  8  7  6  6    8.0    NaN    NaN    NaN
      Time  A  B  C  D  A MaxMin  B MaxMin  C MaxMin  D MaxMin
0  1:00:00  1  5  4  3       1.0       NaN       NaN       NaN
1  2:00:00  2  9  5  2       NaN       9.0       NaN       NaN
2  3:00:00  3  3  3  1       NaN       NaN       3.0       1.0
3  4:00:00  4  1  9  3       NaN       1.0       9.0       NaN
4  5:00:00  5  3  3  5       NaN       NaN       3.0       NaN
5  6:00:00  6  4  4  4       NaN       NaN       NaN       NaN
6  7:00:00  7  6  5  8       NaN       NaN       NaN       8.0
7  8:00:00  8  7  6  6       8.0       NaN       NaN       NaN

你能给我你的数据框
到_dict()
的结果吗?你能给我你的数据框
到_dict()
的结果吗?谢谢兄弟,它很有用。还有一件事,我怎样才能添加同样的最小列呢?很好,删除了我的,它们现在都一样了~:-)没有兄弟,我也想添加同样的最大和最小列。谢谢兄弟,它很有用。还有一件事,我怎样才能添加同样的最小列呢?很好,删除了我的列,它们现在都一样了~:-)不,兄弟,我也想添加同样的最大和最小列。