Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在DataFrame中找到最大值并返回结果DataFrame_Python_Dataframe - Fatal编程技术网

Python 如何在DataFrame中找到最大值并返回结果DataFrame

Python 如何在DataFrame中找到最大值并返回结果DataFrame,python,dataframe,Python,Dataframe,我有一个部分看起来像这样的数据框: df_all_q Out[43]: Qtot Ptot Q_G1 Q_G2 P_G1 P_G2 0 0.0 0.000000 0.0 0.0 0.000000 0.000000 1 5.0 0.576190 0.0 5.0 0.000000 0.576190 2 5.0 0.581900 5.0 0.0 0.581900 0.000000 3 10.0

我有一个部分看起来像这样的数据框:

df_all_q
Out[43]: 
    Qtot      Ptot  Q_G1  Q_G2      P_G1      P_G2
0    0.0  0.000000   0.0   0.0  0.000000  0.000000
1    5.0  0.576190   0.0   5.0  0.000000  0.576190
2    5.0  0.581900   5.0   0.0  0.581900  0.000000
3   10.0  1.152380   0.0  10.0  0.000000  1.152380
4   10.0  1.163800  10.0   0.0  1.163800  0.000000
5   10.0  1.158090   5.0   5.0  0.581900  0.576190
6   15.0  1.805147  15.0   0.0  1.805147  0.000000
7   15.0  1.734280   5.0  10.0  0.581900  1.152380
8   15.0  1.739990  10.0   5.0  1.163800  0.576190
9   15.0  1.569220   0.0  15.0  0.000000  1.569220
10  20.0  2.381337  15.0   5.0  1.805147  0.576190
11  20.0  2.151120   5.0  15.0  0.581900  1.569220
12  20.0  2.466860  20.0   0.0  2.466860  0.000000
13  20.0  1.782640   0.0  20.0  0.000000  1.782640
14  20.0  2.316180  10.0  10.0  1.163800  1.152380
15  25.0  2.713030   0.0  25.0  0.000000  2.713030
16  25.0  2.364540   5.0  20.0  0.581900  1.782640
17  25.0  3.043050  20.0   5.0  2.466860  0.576190
18  25.0  3.111990  25.0   0.0  3.111990  0.000000
19  25.0  2.957527  15.0  10.0  1.805147  1.152380
20  25.0  2.733020  10.0  15.0  1.163800  1.569220
df_result
Out[45]: 
    Qtot      Ptot  Q_G1  Q_G2      P_G1  P_G2
0    0.0  0.000000   0.0   0.0  0.000000   0.0
2    5.0  0.581900   5.0   0.0  0.581900   0.0
4   10.0  1.163800  10.0   0.0  1.163800   0.0
6   15.0  1.805147  15.0   0.0  1.805147   0.0
12  20.0  2.466860  20.0   0.0  2.466860   0.0
18  25.0  3.111990  25.0   0.0  3.111990   0.0
现在我需要为每个Qtot创建另一个最大值为Ptot的数据帧,如下所示:

df_all_q
Out[43]: 
    Qtot      Ptot  Q_G1  Q_G2      P_G1      P_G2
0    0.0  0.000000   0.0   0.0  0.000000  0.000000
1    5.0  0.576190   0.0   5.0  0.000000  0.576190
2    5.0  0.581900   5.0   0.0  0.581900  0.000000
3   10.0  1.152380   0.0  10.0  0.000000  1.152380
4   10.0  1.163800  10.0   0.0  1.163800  0.000000
5   10.0  1.158090   5.0   5.0  0.581900  0.576190
6   15.0  1.805147  15.0   0.0  1.805147  0.000000
7   15.0  1.734280   5.0  10.0  0.581900  1.152380
8   15.0  1.739990  10.0   5.0  1.163800  0.576190
9   15.0  1.569220   0.0  15.0  0.000000  1.569220
10  20.0  2.381337  15.0   5.0  1.805147  0.576190
11  20.0  2.151120   5.0  15.0  0.581900  1.569220
12  20.0  2.466860  20.0   0.0  2.466860  0.000000
13  20.0  1.782640   0.0  20.0  0.000000  1.782640
14  20.0  2.316180  10.0  10.0  1.163800  1.152380
15  25.0  2.713030   0.0  25.0  0.000000  2.713030
16  25.0  2.364540   5.0  20.0  0.581900  1.782640
17  25.0  3.043050  20.0   5.0  2.466860  0.576190
18  25.0  3.111990  25.0   0.0  3.111990  0.000000
19  25.0  2.957527  15.0  10.0  1.805147  1.152380
20  25.0  2.733020  10.0  15.0  1.163800  1.569220
df_result
Out[45]: 
    Qtot      Ptot  Q_G1  Q_G2      P_G1  P_G2
0    0.0  0.000000   0.0   0.0  0.000000   0.0
2    5.0  0.581900   5.0   0.0  0.581900   0.0
4   10.0  1.163800  10.0   0.0  1.163800   0.0
6   15.0  1.805147  15.0   0.0  1.805147   0.0
12  20.0  2.466860  20.0   0.0  2.466860   0.0
18  25.0  3.111990  25.0   0.0  3.111990   0.0

我想这应该很容易做到,但是我被卡住了。

您可以尝试使用
.groupby
方法。它的工作原理与sql中的groupby类似,并返回一个数据帧。
分组后,您可以为组定义操作。对于
Ptot
(根据您的需要)有
max
操作,您可以为其他操作返回
mean

另一个选项是只返回
Ptot
列,然后将结果数据帧与旧数据帧合并

df_all_q.groupby('Qtot').agg({'Ptot': 'max', 'Q_G1': 'mean',
'Q_G2': 'mean', 'P_G1': 'mean', 'P_G2': 'mean'}).reset_index()
因此,按部分:
.groupby
使用相同的值对所有Qtot进行分组
.add
为每列设置聚合功能
.reset_index
使
Qtot
成为普通列,而不是新数据帧的索引

例如,如果您希望结果上的
p\u G1
列是
max
而不是
mean
,您可以用
'mean'
替换
'max'

常见的聚合函数包括
sum
max
min
mean
size
first
。可以在

中找到完整列表。您可以尝试使用
.groupby
方法。它的工作原理与sql中的groupby类似,并返回一个数据帧。
分组后,您可以为组定义操作。对于
Ptot
(根据您的需要)有
max
操作,您可以为其他操作返回
mean

另一个选项是只返回
Ptot
列,然后将结果数据帧与旧数据帧合并

df_all_q.groupby('Qtot').agg({'Ptot': 'max', 'Q_G1': 'mean',
'Q_G2': 'mean', 'P_G1': 'mean', 'P_G2': 'mean'}).reset_index()
因此,按部分:
.groupby
使用相同的值对所有Qtot进行分组
.add
为每列设置聚合功能
.reset_index
使
Qtot
成为普通列,而不是新数据帧的索引

例如,如果您希望结果上的
p\u G1
列是
max
而不是
mean
,您可以用
'mean'
替换
'max'

常见的聚合函数包括
sum
max
min
mean
size
first
。完整的列表可以在

您在这里尝试了什么?
df.groupby('Qtot',as_index=False)。max()中找到。
df.groupby('Qtot',as_index=False)。max()您在这里尝试了什么?