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