Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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_Pandas Groupby - Fatal编程技术网

Python 熊猫群居按等级排列

Python 熊猫群居按等级排列,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我有一个dataframe: date value source 0 2020-02-14 0.438767 L8-SR 1 2020-02-15 0.422867 S2A-SR 2 2020-03-01 0.657453 L8-SR 3 2020-03-01 0.603989 S2B-SR 4 2020-03-11 0.717264 S2B-SR 5 2020-04-02 0.737118

我有一个
dataframe

    date        value       source
0   2020-02-14  0.438767    L8-SR
1   2020-02-15  0.422867    S2A-SR
2   2020-03-01  0.657453    L8-SR
3   2020-03-01  0.603989    S2B-SR
4   2020-03-11  0.717264    S2B-SR
5   2020-04-02  0.737118    L8-SR
我想按
日期
列进行
groupby
,根据从
列中选择的排序/重要性保留行。例如,我的排名是L8-SR>S2B-SR>gp6r,这意味着对于所有具有相同日期的行,保留
source==L8-SR
的行,如果没有包含L8-SR,则保留
source==S2B-SR
的行。我如何在
groupby
中实现这一点

输出应如下所示:

    date        value       source
0   2020-02-14  0.438767    L8-SR
1   2020-02-15  0.422867    S2A-SR
2   2020-03-01  0.657453    L8-SR
3   2020-03-11  0.717264    S2B-SR
4   2020-04-02  0.737118    L8-SR

让我们尝试
category
dtype并
drop\u duplicates

orders = ['L8-SR','S2B-SR','GP6_r']

df.source = df.source.astype('category')

df.source.cat.set_categories(orders, ordered=True)

df.sort_values(['date','source']).drop_duplicates(['date'])
输出:

         date     value  source
0  2020-02-14  0.438767   L8-SR
1  2020-02-15  0.422867  S2A-SR
2  2020-03-01  0.657453   L8-SR
4  2020-03-11  0.717264  S2B-SR
5  2020-04-02  0.737118   L8-SR

请按操作尝试以下分组代码。对于此操作后的订购,您可以通过以下方式执行排序:

# Import pandas library
import pandas as pd

# Declare a data dictionary contains the data mention in table
pandasdata_dict = {'date':['2020-02-14', '2020-02-15', '2020-03-01', '2020-03-01', '2020-03-11', '2020-04-02'],  
        'value':[0.438767, 0.422867, 0.657453, 0.603989, 0.717264, 0.737118],  
        'source':['L8-SR', 'S2A-SR', 'L8-SR', 'S2B-SR', 'S2B-SR', 'L8-SR']}  

# Convert above dictionary data to the data frame
df = pd.DataFrame(pandasdata_dict)

# display data frame
df

# Convert date field to datetime 
df["date"] = pd.to_datetime(df["date"])

# Once conversion done then do the group by operation on the data frame with date field
df.groupby([df['date'].dt.date])

你能提供输出数据帧吗?我认为解释很清楚:),我已经添加了输出,如果你能提供输出数据帧,输出会容易得多。另外,我可以将我的输出与所需的输出进行比较