Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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 保持与数据帧中另一列的最大值相对应的值_Python_Pandas_Dataframe_Group By - Fatal编程技术网

Python 保持与数据帧中另一列的最大值相对应的值

Python 保持与数据帧中另一列的最大值相对应的值,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我有一个数据帧 day type price 0 10900 2 300 1 10900 1 500 2 10900 3 200 3 10901 5 100 4 10901 2 400 5 10901 1 300 6 10902 2 100 7 10902 3 300 8 10902 1 200 9 10902 4 400

我有一个数据帧

    day  type  price
0  10900     2    300
1  10900     1    500
2  10900     3    200
3  10901     5    100
4  10901     2    400
5  10901     1    300
6  10902     2    100
7  10902     3    300
8  10902     1    200
9  10902     4    400
我希望每天保持最高类型的价格,并在当天的所有价格上复制,因此结果将是:

 day  type  price
0  10900     2    200
1  10900     1    200
2  10900     3    200
3  10901     5    100
4  10901     2    100
5  10901     1    100
6  10902     2    400
7  10902     3    400
8  10902     1    400
9  10902     4    400
这就是我正在做的,我想知道这是否是最好的方法,或者是否有一种方法可以不使用合并并以另一种方式创建组:

tmp_df=df[df.groupby('day')['type'].transform('max') == df['type']].reset_index()
df=df[['day','type']].merge(tmp_df[['day','price']],on='day')
印刷品:

     day  type  price
0  10900     2    200
1  10900     1    200
2  10900     3    200
3  10901     5    100
4  10901     2    100
5  10901     1    100
6  10902     2    400
7  10902     3    400
8  10902     1    400
9  10902     4    400
     day  type  price
0  10900     2    200
1  10900     1    200
2  10900     3    200
3  10901     5    100
4  10901     2    100
5  10901     1    100
6  10902     2    400
7  10902     3    400
8  10902     1    400
9  10902     4    400