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()
的结果吗?谢谢兄弟,它很有用。还有一件事,我怎样才能添加同样的最小列呢?很好,删除了我的,它们现在都一样了~:-)没有兄弟,我也想添加同样的最大和最小列。谢谢兄弟,它很有用。还有一件事,我怎样才能添加同样的最小列呢?很好,删除了我的列,它们现在都一样了~:-)不,兄弟,我也想添加同样的最大和最小列。